{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Node2Vec官方作者Aditya Grover代码解读\n",
    "\n",
    "同济子豪兄\n",
    "\n",
    "2022-7-17\n",
    "\n",
    "## 参考资料\n",
    "\n",
    "Node2Vec官方作者Aditya Grover代码：https://github.com/aditya-grover/node2vec\n",
    "\n",
    "深度之眼 赵老师"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 导入工具包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings('ignore')\n",
    "import argparse\n",
    "import numpy as np\n",
    "import networkx as nx\n",
    "from gensim.models import Word2Vec\n",
    "import random\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 读入命令行参数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def parse_args():\n",
    "    '''\n",
    "    Parses the node2vec arguments.\n",
    "    '''\n",
    "    # 使用parser加载信息\n",
    "    parser = argparse.ArgumentParser(description=\"Run node2vec.\")\n",
    "    # 输入文件：邻接表\n",
    "    parser.add_argument('--input', nargs='?', default='karate.edgelist',\n",
    "                        help='Input graph path')\n",
    "    # 输出文件：节点嵌入表\n",
    "    parser.add_argument('--output', nargs='?', default='karate.emb',\n",
    "                        help='Embeddings path')\n",
    "    # embedding嵌入向量维度\n",
    "    parser.add_argument('--dimensions', type=int, default=128,\n",
    "                        help='Number of dimensions. Default is 128.')\n",
    "    # 随机游走序列长度\n",
    "    parser.add_argument('--walk-length', type=int, default=80,\n",
    "                        help='Length of walk per source. Default is 80.')\n",
    "    # 每个节点生成随机游走序列次数\n",
    "    parser.add_argument('--num-walks', type=int, default=10,\n",
    "                        help='Number of walks per source. Default is 10.')\n",
    "    # word2vec窗口大小，word2vec参数\n",
    "    parser.add_argument('--window-size', type=int, default=10,\n",
    "                        help='Context size for optimization. Default is 10.')\n",
    "    # SGD优化时epoch数量，word2vec参数\n",
    "    parser.add_argument('--iter', default=1, type=int,\n",
    "                        help='Number of epochs in SGD')\n",
    "    # 并行化核数，word2vec参数\n",
    "    parser.add_argument('--workers', type=int, default=8,\n",
    "                        help='Number of parallel workers. Default is 8.')\n",
    "    # 参数p\n",
    "    parser.add_argument('--p', type=float, default=1,\n",
    "                        help='Return hyperparameter. Default is 1.')\n",
    "    # 参数q\n",
    "    parser.add_argument('--q', type=float, default=2,\n",
    "                        help='Inout hyperparameter. Default is 2.')\n",
    "    # 连接是否带权重\n",
    "    parser.add_argument('--weighted', dest='weighted', action='store_true',\n",
    "                        help='Boolean specifying (un)weighted. Default is unweighted.')\n",
    "    parser.add_argument('--unweighted', dest='unweighted', action='store_false')\n",
    "    parser.set_defaults(weighted=False)\n",
    "    \n",
    "    # 有向图还是无向图\n",
    "    parser.add_argument('--directed', dest='directed', action='store_true',\n",
    "                        help='Graph is (un)directed. Default is undirected.')\n",
    "    parser.add_argument('--undirected', dest='undirected', action='store_false')\n",
    "    parser.set_defaults(directed=False)\n",
    "    \n",
    "    return parser.parse_args(args=[])\n",
    "\n",
    "args = parse_args()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Namespace(dimensions=128, directed=False, input='karate.edgelist', iter=1, num_walks=10, output='karate.emb', p=1, q=2, undirected=True, unweighted=True, walk_length=80, weighted=False, window_size=10, workers=8)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "args"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 载入图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 连接带权重\n",
    "if args.weighted:\n",
    "    G = nx.read_edgelist(args.input, nodetype=int, data=(('weight', float),), create_using=nx.DiGraph())\n",
    "# 连接不带权重\n",
    "else:\n",
    "    G = nx.read_edgelist(args.input, nodetype=int, create_using=nx.DiGraph())\n",
    "    for edge in G.edges():\n",
    "        G[edge[0]][edge[1]]['weight'] = np.abs(np.random.randn())\n",
    "        \n",
    "# 无向图\n",
    "if not args.directed:\n",
    "    G = G.to_undirected()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "34"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(G)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "NodeView((1, 32, 22, 20, 18, 14, 13, 12, 11, 9, 8, 7, 6, 5, 4, 3, 2, 31, 10, 33, 29, 28, 17, 34, 15, 16, 19, 21, 23, 24, 30, 26, 25, 27))"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "G.nodes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "EdgeView([(1, 32), (1, 22), (1, 20), (1, 18), (1, 14), (1, 13), (1, 12), (1, 11), (1, 9), (1, 8), (1, 7), (1, 6), (1, 5), (1, 4), (1, 3), (1, 2), (32, 34), (32, 33), (32, 29), (32, 26), (32, 25), (22, 2), (20, 34), (20, 2), (18, 2), (14, 34), (14, 4), (14, 3), (14, 2), (13, 4), (11, 6), (11, 5), (9, 34), (9, 33), (9, 3), (8, 4), (8, 3), (8, 2), (7, 17), (7, 6), (7, 5), (6, 17), (4, 3), (4, 2), (3, 10), (3, 33), (3, 29), (3, 28), (3, 2), (2, 31), (31, 34), (31, 33), (10, 34), (33, 34), (33, 15), (33, 16), (33, 19), (33, 21), (33, 23), (33, 24), (33, 30), (29, 34), (28, 34), (28, 24), (28, 25), (34, 15), (34, 16), (34, 19), (34, 21), (34, 23), (34, 24), (34, 30), (34, 27), (24, 30), (24, 26), (30, 27), (26, 25)])"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "G.edges"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAb4AAAEuCAYAAADx63eqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAACubklEQVR4nOydeVxN6R/H37duqyhLe5GdkOwMhrLvOyFb9nXsxjBjGMZgxr4vYbIz9p3InjUhe0SoVFq13nvP749+XV3d6rYgnPfr1YvOeZ7nPOdW53Oe7/NdJIIgCIiIiIiIiHwnaH3pCYiIiIiIiHxOROETEREREfmuEIVPREREROS7QhQ+EREREZHvClH4RERERES+K0ThExERERH5rhCFT0RERETku0IUPhERERGR7wpR+EREREREvitE4RMRERER+a4QhU9ERERE5LtCFD4RERERke8KUfhERERERL4rROETEREREfmuEIVPREREROS7QhQ+EREREZHvClH4RERERES+K0ThExERERH5rhCFT0RERETku0IUPhERERGR7wpR+EREREREvitE4RMRERER+a6QfukJiIiIiIh8fYTFJrLn5iseBkcTnSCjkL6UChaF6FbDhqJGel96epkiEQRB+NKTEBERERH5OvANjGSF11POPQ4FIFGmUJ7Tl2ohAI3LmzKiURmq2pp8mUlmgSh8IiIiIiIascU7gDlHH5Igk5OZckgkoC/VZlrrCrjWtfts89MU0dQpIiIiIpIlKaL3gPhkRZZtBQHik+XMOfoAIN+Jn7jiExERERHJFN/ASFzWeROfLCfusTfvPNeBPBmThq4YlK7Fq+V90TIoqGxvPWw9WnqGABjoaLNzSF0cbEy+0OzTI674REREREQyZYXXUxJkchTJiYQfX4Z5zzlItHUI2vgTVqVqIDUxx3rYerV9E2RyVno9ZbVrzc8864wRhU9EREREJEPCYhM59zgUQQDZu9doGxqja2oHgJauAbKIILT0jTLsLwhw9lEo4bGJ+cbbU4zjExERERHJkD03Xyn/r1OsOOa95wEgiwlHnhCDtIgVioT3vFk3nMAlvYi5fTzdGBJgz61X6Y5/KcQVn0ie8DXH9IiIiGTMw+BoZciCRFuKtkFBBIWcd8eXU9CxFRJtKVITc4q1m4gsJoyQrVMoUKGByiowQabgYVDMl7qFdIjC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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 可视化\n",
    "pos = nx.spring_layout(G, seed=4)\n",
    "nx.draw(G, pos, with_labels=True)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Alias Sampling\n",
    "\n",
    "参考博客\n",
    "\n",
    "https://keithschwarz.com/darts-dice-coins\n",
    "\n",
    "https://www.bilibili.com/video/av798804262\n",
    "\n",
    "https://www.cnblogs.com/Lee-yl/p/12749070.html"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![](alias-sampling.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "def alias_setup(probs):\n",
    "    '''\n",
    "    Compute utility lists for non-uniform sampling from discrete distributions.\n",
    "    Refer to https://hips.seas.harvard.edu/blog/2013/03/03/the-alias-method-efficient-sampling-with-many-discrete-outcomes/\n",
    "    for details\n",
    "    '''\n",
    "    K = len(probs)\n",
    "    # q corrsespond to Prob\n",
    "    q = np.zeros(K)\n",
    "    # J Alias\n",
    "    J = np.zeros(K, dtype=np.int)\n",
    "\n",
    "    smaller = []\n",
    "    larger = []\n",
    "    \n",
    "    # 将各个概率分成两组，一组的概率值大于1，另一组的概率值小于1\n",
    "    for kk, prob in enumerate(probs):\n",
    "        q[kk] = K*prob # 每类事件的概率 乘 事件个数\n",
    "        \n",
    "        # 判定”劫富”和“济贫“的对象\n",
    "        if q[kk] < 1.0:\n",
    "            smaller.append(kk)\n",
    "        else:\n",
    "            larger.append(kk)\n",
    "    \n",
    "    # 使用贪心算法，将概率值小于1的不断填满\n",
    "    # pseudo code step 3\n",
    "    while len(smaller) > 0 and len(larger) > 0:\n",
    "        small = smaller.pop()\n",
    "        large = larger.pop()\n",
    "\n",
    "        J[small] = large\n",
    "        # 更新概率值，劫富济贫，削峰填谷\n",
    "        q[large] = q[large] - (1 - q[small])\n",
    "        if q[large] < 1.0:\n",
    "            smaller.append(large) # 把被打倒的土豪归为贫农\n",
    "        else:\n",
    "            larger.append(large)\n",
    "\n",
    "    return J, q"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "def alias_draw(J, q):\n",
    "    '''\n",
    "    Draw sample from a non-uniform discrete distribution using alias sampling.\n",
    "    O(1)的采样\n",
    "    '''\n",
    "    K = len(J) # 事件个数\n",
    "\n",
    "    kk = int(np.floor(np.random.rand()*K)) # 生成1到K的随机整数\n",
    "    if np.random.rand() < q[kk]:\n",
    "        return kk # 取自己本来就对应的事件 \n",
    "    else:\n",
    "        return J[kk] # 取alias事件"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_alias_edge(src, dst):\n",
    "    p = args.p\n",
    "    q = args.q\n",
    "\n",
    "    unnormalized_probs = []\n",
    "    \n",
    "    # 论文3.2.2节核心算法，计算各条边的转移权重\n",
    "    for dst_nbr in sorted(G.neighbors(dst)):\n",
    "        if dst_nbr == src:\n",
    "            unnormalized_probs.append(G[dst][dst_nbr]['weight']/p)\n",
    "        elif G.has_edge(dst_nbr, src):\n",
    "            unnormalized_probs.append(G[dst][dst_nbr]['weight'])\n",
    "        else:\n",
    "            unnormalized_probs.append(G[dst][dst_nbr]['weight']/q)\n",
    "\n",
    "    # 归一化各条边的转移权重\n",
    "    norm_const = sum(unnormalized_probs)\n",
    "    normalized_probs =  [float(u_prob)/norm_const for u_prob in unnormalized_probs]\n",
    "    \n",
    "    # 执行 Alias Sampling\n",
    "    return alias_setup(normalized_probs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([0, 0]), array([1.        , 0.99287252]))"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "get_alias_edge(15, 16)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "25号节点\n",
      "[2.1920637710428705, 0.32773500112215365, 0.09475410123694732]\n",
      "2.6145528734019714\n",
      "[0.8384086599827022, 0.12535030538346523, 0.036241034633832575]\n",
      "(array([0, 0, 0]), array([1.        , 0.37605092, 0.1087231 ]))\n"
     ]
    }
   ],
   "source": [
    "is_directed = args.directed\n",
    "alias_nodes = {}\n",
    "\n",
    "# 节点概率alias sampling和归一化\n",
    "for node in G.nodes():\n",
    "    unnormalized_probs = [G[node][nbr]['weight'] for nbr in sorted(G.neighbors(node))]\n",
    "    norm_const = sum(unnormalized_probs)\n",
    "    normalized_probs =  [float(u_prob)/norm_const for u_prob in unnormalized_probs]\n",
    "    alias_nodes[node] = alias_setup(normalized_probs)\n",
    "    # 信息展示\n",
    "    if node == 25:\n",
    "        print('25号节点')\n",
    "        print(unnormalized_probs)\n",
    "        print(norm_const)\n",
    "        print(normalized_probs)\n",
    "        print(alias_nodes[node])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "alias_edges = {}\n",
    "triads = {}\n",
    "\n",
    "# 边概率alias sampling和归一化\n",
    "if is_directed:\n",
    "    for edge in G.edges():\n",
    "        alias_edges[edge] = get_alias_edge(edge[0], edge[1])\n",
    "else:\n",
    "    for edge in G.edges():\n",
    "        alias_edges[edge] = get_alias_edge(edge[0], edge[1])\n",
    "        alias_edges[(edge[1], edge[0])] = get_alias_edge(edge[1], edge[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 25号节点\n",
    "# [1.1586240507181784, 0.020391845658342782, 0.3362738912277038]\n",
    "# 1.515289787604225\n",
    "# [0.7646220942002393, 0.013457390015532053, 0.22192051578422858]\n",
    "# (array([0, 0, 0]), array([1.        , 0.04037217, 0.66576155]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![](alias_result.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{1: (array([ 0,  0,  1,  1,  3,  1,  3,  4,  4,  4,  4,  4,  7,  4,  7, 12]),\n",
       "  array([1.        , 0.85127456, 0.41972216, 0.87203933, 0.64813963,\n",
       "         0.51809209, 0.79495076, 0.46705547, 0.49062574, 0.85282988,\n",
       "         0.8716921 , 0.2340539 , 0.62150297, 0.93835217, 0.08564636,\n",
       "         0.41316468])),\n",
       " 32: (array([4, 4, 5, 5, 0, 4]),\n",
       "  array([0.61095678, 0.15737387, 0.67365887, 0.6156385 , 1.        ,\n",
       "         0.84110097])),\n",
       " 22: (array([1, 0]), array([0.34741211, 1.        ])),\n",
       " 20: (array([1, 0, 1]), array([0.91043109, 1.        , 0.40116567])),\n",
       " 18: (array([0, 0]), array([1.        , 0.68704206])),\n",
       " 14: (array([3, 0, 4, 1, 3]),\n",
       "  array([0.24774739, 1.        , 0.02721161, 0.28720411, 0.78936819])),\n",
       " 13: (array([1, 0]), array([0.49594167, 1.        ])),\n",
       " 12: (array([0]), array([1.])),\n",
       " 11: (array([2, 0, 1]), array([0.40420509, 1.        , 0.72807059])),\n",
       " 9: (array([0, 3, 0, 2]),\n",
       "  array([1.        , 0.3482699 , 0.89626081, 0.6483216 ])),\n",
       " 8: (array([1, 0, 1, 1]),\n",
       "  array([0.71796742, 1.        , 0.96062606, 0.09730199])),\n",
       " 7: (array([3, 3, 3, 0]),\n",
       "  array([0.73002205, 0.32608271, 0.17813683, 1.        ])),\n",
       " 6: (array([0, 0, 0, 2]),\n",
       "  array([1.        , 0.10650749, 0.54002144, 0.1862421 ])),\n",
       " 5: (array([0, 2, 0]), array([1.        , 0.21666805, 0.66213337])),\n",
       " 4: (array([4, 0, 4, 5, 1, 4]),\n",
       "  array([0.40052973, 1.        , 0.30718343, 0.10280875, 0.46023864,\n",
       "         0.22979966])),\n",
       " 3: (array([0, 0, 0, 1, 0, 0, 8, 9, 3, 8]),\n",
       "  array([1.        , 0.92136016, 0.36018046, 0.81454195, 0.62134699,\n",
       "         0.81294571, 0.02876446, 0.52259232, 0.62443751, 0.58602623])),\n",
       " 2: (array([2, 3, 0, 2, 3, 3, 4, 6, 6]),\n",
       "  array([0.89132465, 0.76753954, 1.        , 0.85668715, 0.68775412,\n",
       "         0.49061489, 0.43220973, 0.31611727, 0.76584105])),\n",
       " 31: (array([2, 2, 0]), array([0.97436892, 0.86946933, 1.        ])),\n",
       " 10: (array([1, 0]), array([0.92900816, 1.        ])),\n",
       " 33: (array([ 0,  0,  1,  1,  1,  8, 10,  1,  7,  8,  9, 10]),\n",
       "  array([1.        , 0.72734241, 0.32918619, 0.77563335, 0.52237403,\n",
       "         0.03363169, 0.37224304, 0.43566705, 0.05891437, 0.97622007,\n",
       "         0.79686089, 0.25985584])),\n",
       " 29: (array([0, 2, 0]), array([1.        , 0.36326134, 0.43286927])),\n",
       " 28: (array([3, 3, 3, 0]),\n",
       "  array([0.42874125, 0.52291895, 0.33790733, 1.        ])),\n",
       " 17: (array([1, 0]), array([0.20245015, 1.        ])),\n",
       " 34: (array([ 0,  0,  0,  2,  2,  3,  7,  3,  7,  7,  8,  8,  8, 11, 11, 11, 11]),\n",
       "  array([1.        , 0.66371463, 0.69368431, 0.92201847, 0.45249905,\n",
       "         0.44830715, 0.32763552, 0.64002565, 0.84990867, 0.96387293,\n",
       "         0.78329407, 0.59944367, 0.97138712, 0.34637297, 0.92803119,\n",
       "         0.83156823, 0.15377461])),\n",
       " 15: (array([1, 0]), array([0.19206638, 1.        ])),\n",
       " 16: (array([0, 0]), array([1.        , 0.99287252])),\n",
       " 19: (array([1, 0]), array([0.81624428, 1.        ])),\n",
       " 21: (array([1, 0]), array([0.02621277, 1.        ])),\n",
       " 23: (array([1, 0]), array([0.25672894, 1.        ])),\n",
       " 24: (array([0, 3, 4, 0, 3]),\n",
       "  array([1.        , 0.71280919, 0.28239186, 0.80382997, 0.80447271])),\n",
       " 30: (array([2, 3, 0, 2]),\n",
       "  array([0.53806561, 0.55184501, 1.        , 0.59403041])),\n",
       " 26: (array([1, 0, 1]), array([0.740349  , 1.        , 0.35282771])),\n",
       " 25: (array([0, 0, 0]), array([1.        , 0.37605092, 0.1087231 ])),\n",
       " 27: (array([1, 0]), array([0.37944941, 1.        ]))}"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 每个节点的 J表 和 q表 （不考虑p、q值）\n",
    "alias_nodes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{(1, 32): (array([0, 4, 4, 5, 0, 4]),\n",
       "  array([1.        , 0.14283004, 0.61140216, 0.55874379, 0.89101054,\n",
       "         0.96713623])),\n",
       " (32,\n",
       "  1): (array([ 0,  0,  1,  1,  3,  1,  3,  4,  4,  4,  4,  4,  7,  4,  7, 12]), array([1.        , 0.88019116, 0.40915659, 0.9759515 , 0.80803349,\n",
       "         0.50505028, 0.77493966, 0.78254429, 0.47827534, 0.83136179,\n",
       "         0.8497492 , 0.22816211, 0.98344945, 0.91473125, 0.08349041,\n",
       "         0.80552838])),\n",
       " (1, 22): (array([1, 0]), array([0.34741211, 1.        ])),\n",
       " (22,\n",
       "  1): (array([ 0,  0,  0,  1,  3,  0,  1,  4,  1,  3,  3,  4,  7,  4,  7, 12]), array([1.        , 0.99645322, 0.38966053, 0.90774418, 0.98013329,\n",
       "         0.48098495, 0.73801426, 0.29824782, 0.45548581, 0.79174792,\n",
       "         0.80925918, 0.21729033, 0.50536659, 0.87114488, 0.15902428,\n",
       "         0.38357272])),\n",
       " (1, 20): (array([1, 0, 1]), array([0.97566497, 1.        , 0.21495492])),\n",
       " (20,\n",
       "  1): (array([ 0,  0,  0,  1,  3,  1,  1,  4,  3,  4,  4,  4,  7, 12, 13, 13]), array([1.        , 0.59636303, 0.37129019, 0.62897257, 0.93089865,\n",
       "         0.45830916, 0.70322097, 0.72714049, 0.43401217, 0.75442138,\n",
       "         0.77110708, 0.20704629, 0.17031087, 0.10140339, 0.07576358,\n",
       "         0.36548939])),\n",
       " (1, 18): (array([0, 0]), array([1.        , 0.68704206])),\n",
       " (18,\n",
       "  1): (array([ 0,  0,  0,  1,  3,  1,  1,  4,  4,  4,  4,  4,  7,  7, 12, 12]), array([1.        , 0.63171447, 0.36582945, 0.70796684, 0.46249625,\n",
       "         0.45156859, 0.69287836, 0.89293583, 0.42762895, 0.74332574,\n",
       "         0.75976604, 0.20400116, 0.54113635, 0.8178669 , 0.07464929,\n",
       "         0.36011396])),\n",
       " (1, 14): (array([1, 0, 4, 1, 3]),\n",
       "  array([0.30074302, 1.        , 0.03303245, 0.62007703, 0.10258214])),\n",
       " (14, 1): (array([0, 0, 0, 1, 3, 1, 1, 4, 1, 1, 1, 1, 1, 4, 4, 7]),\n",
       "  array([1.        , 0.47074587, 0.67683741, 0.98232425, 0.83017386,\n",
       "         0.41773361, 0.6409626 , 0.75213006, 0.39558771, 0.68763008,\n",
       "         0.70283854, 0.37743166, 0.97427374, 0.75658604, 0.06905599,\n",
       "         0.33313146])),\n",
       " (1, 13): (array([1, 0]), array([0.49594167, 1.        ])),\n",
       " (13,\n",
       "  1): (array([ 0,  0,  1,  1,  3,  1,  3,  4,  4,  4,  7,  4, 10,  4, 10, 12]), array([1.        , 0.93706745, 0.77675017, 0.79196217, 0.73415506,\n",
       "         0.47939823, 0.73557964, 0.82129647, 0.45398322, 0.78913603,\n",
       "         0.19282944, 0.21657351, 0.50040055, 0.86827107, 0.07924984,\n",
       "         0.38230736])),\n",
       " (1, 12): (array([0]), array([1.])),\n",
       " (12,\n",
       "  1): (array([ 0,  0,  1,  1,  3,  3,  3,  4,  4,  7,  4,  4,  9,  4,  9, 12]), array([1.        , 0.9094053 , 0.39848231, 0.57280719, 0.96957266,\n",
       "         0.49187427, 0.75472264, 0.91095229, 0.46579785, 0.24010542,\n",
       "         0.82758051, 0.2222097 , 0.53944754, 0.89086728, 0.08131227,\n",
       "         0.39225667])),\n",
       " (1, 11): (array([2, 0, 1]), array([0.40420509, 1.        , 0.72807059])),\n",
       " (11, 1): (array([1, 0, 3, 1, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 7]),\n",
       "  array([0.88734195, 1.        , 0.32421766, 0.53574644, 0.98965299,\n",
       "         0.40020429, 0.61406594, 0.67860555, 0.75797538, 0.65877511,\n",
       "         0.67334538, 0.18079676, 0.93339036, 0.72483747, 0.0661582 ,\n",
       "         0.31915229])),\n",
       " (1, 9): (array([0, 0, 0, 0]),\n",
       "  array([1.        , 0.51103348, 0.91558116, 0.95381477])),\n",
       " (9, 1): (array([1, 0, 1, 1, 3, 1, 1, 4, 1, 4, 4, 4, 7, 7, 7, 7]),\n",
       "  array([0.92820076, 1.        , 0.33914669, 0.97619513, 0.82156631,\n",
       "         0.41863221, 0.6423414 , 0.98173782, 0.39643867, 0.68910927,\n",
       "         0.70435044, 0.18912179, 0.97636954, 0.75821356, 0.06920454,\n",
       "         0.33384807])),\n",
       " (1, 8): (array([1, 0, 1, 1]),\n",
       "  array([0.71796742, 1.        , 0.96062606, 0.09730199])),\n",
       " (8, 1): (array([0, 0, 0, 1, 3, 1, 4, 6, 1, 1, 1, 3, 3, 4, 4, 7]),\n",
       "  array([1.        , 0.54027114, 0.65823219, 0.19558728, 0.94408693,\n",
       "         0.40625076, 0.95065379, 0.70396672, 0.38471362, 0.6687282 ,\n",
       "         0.6835186 , 0.18352833, 0.94749247, 0.73578866, 0.06715775,\n",
       "         0.3239742 ])),\n",
       " (1, 7): (array([0, 3, 3, 0]),\n",
       "  array([1.        , 0.49838389, 0.27226382, 0.88423638])),\n",
       " (7, 1): (array([1, 0, 3, 1, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 7]),\n",
       "  array([0.88616686, 1.        , 0.32378831, 0.5390098 , 0.59793808,\n",
       "         0.7993486 , 0.61325274, 0.6763826 , 0.3784858 , 0.65790271,\n",
       "         0.67245368, 0.18055734, 0.93215429, 0.72387758, 0.06607059,\n",
       "         0.31872964])),\n",
       " (1, 6): (array([0, 0, 0, 2]),\n",
       "  array([1.        , 0.10904611, 0.48138748, 0.0953406 ])),\n",
       " (6, 1): (array([1, 0, 3, 1, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 7]),\n",
       "  array([0.92815759, 1.        , 0.33913091, 0.42239657, 0.92869054,\n",
       "         0.83722548, 0.64231152, 0.75581746, 0.79284047, 0.68907721,\n",
       "         0.70431768, 0.18911299, 0.97632412, 0.75817829, 0.06920132,\n",
       "         0.33383255])),\n",
       " (1, 5): (array([0, 2, 0]), array([1.        , 0.21666805, 0.66213337])),\n",
       " (5,\n",
       "  1): (array([ 1,  0,  1,  1,  3,  1,  3,  4,  3,  3,  3,  4,  7,  4,  4, 12]), array([0.99685102, 1.        , 0.36423017, 0.96820763, 0.45026684,\n",
       "         0.89918898, 0.68984934, 0.93434882, 0.85151901, 0.74007618,\n",
       "         0.7564446 , 0.20310934, 0.40712205, 0.81429147, 0.07432295,\n",
       "         0.35853967])),\n",
       " (1, 4): (array([4, 0, 4, 5, 1, 4]),\n",
       "  array([0.40052973, 1.        , 0.30718343, 0.10280875, 0.46023864,\n",
       "         0.22979966])),\n",
       " (4,\n",
       "  1): (array([ 0,  0,  0,  1,  3,  1,  4,  6,  1,  1,  7,  1,  1,  4,  6, 10]), array([1.        , 0.66671298, 0.62439591, 0.99817891, 0.93529737,\n",
       "         0.38536753, 0.15944653, 0.91313962, 0.3649375 , 0.63435237,\n",
       "         0.60408532, 0.34818818, 0.89878682, 0.6979656 , 0.06370552,\n",
       "         0.30732037])),\n",
       " (1, 3): (array([0, 0, 0, 1, 0, 0, 1, 3, 3, 8]),\n",
       "  array([1.        , 0.28949112, 0.46202508, 0.83281111, 0.79703906,\n",
       "         0.52140711, 0.0368979 , 0.33518026, 0.97101249, 0.68206523])),\n",
       " (3, 1): (array([0, 0, 0, 1, 3, 1, 4, 6, 1, 1, 1, 4, 4, 6, 7, 7]),\n",
       "  array([1.        , 0.75923848, 0.59963576, 0.89034331, 0.86960988,\n",
       "         0.37008594, 0.67659556, 0.87060165, 0.35046605, 0.60919739,\n",
       "         0.62267114, 0.33438093, 0.86314581, 0.67028808, 0.06117931,\n",
       "         0.29513371])),\n",
       " (1, 2): (array([2, 2, 0, 2, 3, 3, 4, 4, 6]),\n",
       "  array([0.93093279, 0.80164699, 1.        , 0.95979692, 0.45169178,\n",
       "         0.51241653, 0.81018958, 0.33016469, 0.39993651])),\n",
       " (2,\n",
       "  1): (array([ 0,  0,  0,  0,  1,  1,  4,  6,  1,  1,  4,  4,  7, 12, 12, 13]), array([1.        , 0.80587491, 0.5872496 , 0.99964903, 0.64736144,\n",
       "         0.3624414 , 0.75580983, 0.64356328, 0.34322678, 0.59661373,\n",
       "         0.60980917, 0.32747391, 0.41238671, 0.60192243, 0.11983116,\n",
       "         0.28903739])),\n",
       " (32,\n",
       "  34): (array([ 0,  0,  0,  2,  3,  7, 11,  3,  7, 11, 11,  8, 11, 12, 12, 12, 15]), array([1.        , 0.59520543, 0.9317442 , 0.74874293, 0.40579171,\n",
       "         0.4020325 , 0.2938167 , 0.69854016, 0.9525868 , 0.86438114,\n",
       "         0.70244178, 0.61119908, 0.65236828, 0.31062005, 0.83223901,\n",
       "         0.76726981, 0.27580372])),\n",
       " (34, 32): (array([4, 4, 5, 5, 0, 4]),\n",
       "  array([0.34719995, 0.08943382, 0.38283285, 0.69972104, 1.        ,\n",
       "         0.84629936])),\n",
       " (32, 33): (array([ 0,  0,  1,  1, 10, 10, 10,  1, 10, 10,  7, 10]),\n",
       "  array([1.        , 0.94126199, 0.27385365, 0.64525801, 0.43456876,\n",
       "         0.02797858, 0.30967312, 0.8055383 , 0.87272685, 0.98112202,\n",
       "         0.66020244, 0.43235393])),\n",
       " (33, 32): (array([4, 4, 5, 5, 0, 4]),\n",
       "  array([0.36869881, 0.09497163, 0.40653812, 0.37152412, 1.        ,\n",
       "         0.65102004])),\n",
       " (32, 29): (array([0, 2, 0]), array([1.        , 0.49168336, 0.93942458])),\n",
       " (29, 32): (array([4, 5, 5, 5, 0, 4]),\n",
       "  array([0.44882359, 0.11561064, 0.49488606, 0.90452579, 1.        ,\n",
       "         0.79500721])),\n",
       " (32, 26): (array([1, 0, 1]), array([0.4222803 , 1.        , 0.40249177])),\n",
       " (26, 32): (array([4, 4, 0, 5, 2, 4]),\n",
       "  array([0.53663053, 0.27645695, 1.        , 0.54074269, 0.81659088,\n",
       "         0.90376083])),\n",
       " (32, 25): (array([0, 0, 0]), array([1.        , 0.20059797, 0.11599298])),\n",
       " (25, 32): (array([4, 4, 0, 5, 2, 4]),\n",
       "  array([0.53663053, 0.27645695, 1.        , 0.54074269, 0.81659088,\n",
       "         0.90376083])),\n",
       " (22, 2): (array([0, 0, 0, 2, 3, 3, 4, 3, 6]),\n",
       "  array([1.        , 0.67674701, 0.7514739 , 0.64758382, 0.97280474,\n",
       "         0.43257988, 0.86577914, 0.55744728, 0.67524944])),\n",
       " (2, 22): (array([1, 0]), array([0.34741211, 1.        ])),\n",
       " (20,\n",
       "  34): (array([ 0,  0,  0,  2,  2,  3,  7,  3,  7,  7,  7,  8,  7, 11, 11, 11, 11]), array([1.        , 0.65116494, 0.73729274, 0.99912602, 0.44394308,\n",
       "         0.43983043, 0.642881  , 0.76028173, 0.9799773 , 0.94564776,\n",
       "         0.76848334, 0.51247617, 0.95301987, 0.33982366, 0.91048373,\n",
       "         0.81584472, 0.150867  ])),\n",
       " (34, 20): (array([1, 0, 1]), array([0.80304623, 1.        , 0.70769679])),\n",
       " (20, 2): (array([0, 0, 0, 2, 3, 6, 4, 6, 6]),\n",
       "  array([1.        , 0.61449176, 0.95832013, 0.95597902, 0.42621066,\n",
       "         0.39278603, 0.42102247, 0.25308332, 0.61313195])),\n",
       " (2, 20): (array([1, 0, 1]), array([0.97566497, 1.        , 0.21495492])),\n",
       " (18, 2): (array([0, 0, 0, 2, 3, 0, 4, 3, 6]),\n",
       "  array([1.        , 0.66537238, 0.93864837, 0.85331226, 0.92283841,\n",
       "         0.85061832, 0.83441949, 0.27403891, 0.66389998])),\n",
       " (2, 18): (array([0, 0]), array([1.        , 0.68704206])),\n",
       " (14,\n",
       "  34): (array([ 0,  0,  0,  2,  2,  2,  3,  3,  7,  3,  3,  8,  7,  8, 11, 11, 11]), array([1.        , 0.61592041, 0.85976255, 0.57547692, 0.4199145 ,\n",
       "         0.41602446, 0.30404242, 0.94843973, 0.65630895, 0.89446425,\n",
       "         0.72688891, 0.94680625, 0.90143734, 0.32143058, 0.86120348,\n",
       "         0.77168684, 0.14270127])),\n",
       " (34, 14): (array([4, 0, 4, 4, 1]),\n",
       "  array([0.18318667, 1.        , 0.02012051, 0.92432681, 0.73354316])),\n",
       " (14, 4): (array([1, 0, 4, 5, 1, 4]),\n",
       "  array([0.51270729, 1.        , 0.39321721, 0.06580135, 0.51628578,\n",
       "         0.50843197])),\n",
       " (4, 14): (array([1, 0, 4, 1, 3]),\n",
       "  array([0.30074302, 1.        , 0.03303245, 0.62007703, 0.10258214])),\n",
       " (14, 3): (array([0, 0, 0, 0, 0, 0, 1, 8, 1, 8]),\n",
       "  array([1.        , 0.25752414, 0.52276094, 0.86365058, 0.45090722,\n",
       "         0.58994909, 0.04174834, 0.37924164, 0.60935512, 0.77172665])),\n",
       " (3, 14): (array([1, 0, 4, 1, 3]),\n",
       "  array([0.30074302, 1.        , 0.03303245, 0.62007703, 0.10258214])),\n",
       " (14, 2): (array([0, 0, 1, 2, 3, 2, 2, 4, 4]),\n",
       "  array([1.        , 0.78145525, 0.73213918, 0.76218582, 0.45605722,\n",
       "         0.33536389, 0.92297558, 0.21608459, 0.52349702])),\n",
       " (2, 14): (array([1, 0, 4, 1, 3]),\n",
       "  array([0.30074302, 1.        , 0.03303245, 0.62007703, 0.10258214])),\n",
       " (13, 4): (array([4, 0, 4, 4, 1, 4]),\n",
       "  array([0.53863265, 1.        , 0.20655024, 0.06912864, 0.96466395,\n",
       "         0.75778906])),\n",
       " (4, 13): (array([1, 0]), array([0.49594167, 1.        ])),\n",
       " (11, 6): (array([0, 0, 0, 2]),\n",
       "  array([1.        , 0.05527652, 0.50185896, 0.09665813])),\n",
       " (6, 11): (array([2, 2, 0]), array([0.51294296, 0.80704976, 1.        ])),\n",
       " (11, 5): (array([0, 2, 0]), array([1.        , 0.11239267, 0.61201123])),\n",
       " (5, 11): (array([1, 0, 1]), array([0.51864003, 1.        , 0.84933325])),\n",
       " (9,\n",
       "  34): (array([ 0,  0,  0,  2,  0,  0,  3,  3,  7,  3,  3,  8,  7,  8, 11, 11, 11]), array([1.        , 0.60028321, 0.61376663, 0.42067304, 0.40925357,\n",
       "         0.40546229, 0.29632329, 0.88572032, 0.65178295, 0.87175528,\n",
       "         0.70843441, 0.98568168, 0.87855134, 0.31326999, 0.83933895,\n",
       "         0.75209499, 0.27815664])),\n",
       " (34, 9): (array([2, 3, 0, 2]),\n",
       "  array([0.67424601, 0.21274917, 1.        , 0.80108577])),\n",
       " (9, 33): (array([ 0,  0,  0,  1,  1,  1,  1,  1,  1,  7,  7, 10]),\n",
       "  array([1.        , 0.87034471, 0.24388686, 0.57464981, 0.38701551,\n",
       "         0.02491698, 0.27578674, 0.88263538, 0.77722757, 0.87376146,\n",
       "         0.98886793, 0.38504304])),\n",
       " (33, 9): (array([2, 3, 0, 2]),\n",
       "  array([0.64019574, 0.40401013, 1.        , 0.91213372])),\n",
       " (9, 3): (array([0, 0, 0, 0, 0, 0, 8, 9, 0, 8]),\n",
       "  array([1.        , 0.79234187, 0.25784366, 0.85196428, 0.88961174,\n",
       "         0.58196632, 0.02059172, 0.37411002, 0.35592312, 0.89667842])),\n",
       " (3, 9): (array([0, 2, 0, 2]),\n",
       "  array([1.        , 0.41584787, 0.68209229, 0.77615626])),\n",
       " (8, 4): (array([1, 0, 1, 4, 1, 4]),\n",
       "  array([0.57559206, 1.        , 0.44144624, 0.14774409, 0.77020607,\n",
       "         0.80978635])),\n",
       " (4, 8): (array([1, 0, 1, 1]),\n",
       "  array([0.71796742, 1.        , 0.96062606, 0.09730199])),\n",
       " (8, 3): (array([0, 0, 0, 1, 0, 0, 1, 8, 3, 8]),\n",
       "  array([1.        , 0.50039114, 0.48212831, 0.99958103, 0.41585956,\n",
       "         0.54409412, 0.01925169, 0.34976433, 0.4065378 , 0.71174266])),\n",
       " (3, 8): (array([1, 0, 1, 1]),\n",
       "  array([0.71796742, 1.        , 0.96062606, 0.09730199])),\n",
       " (8, 2): (array([0, 0, 0, 2, 2, 3, 3, 3, 3]),\n",
       "  array([1.        , 0.99957174, 0.83965037, 0.39162617, 0.81755181,\n",
       "         0.31946548, 0.8792206 , 0.20584079, 0.49867989])),\n",
       " (2, 8): (array([1, 0, 1, 1]),\n",
       "  array([0.71796742, 1.        , 0.96062606, 0.09730199])),\n",
       " (7, 17): (array([1, 0]), array([0.20245015, 1.        ])),\n",
       " (17, 7): (array([3, 3, 3, 0]),\n",
       "  array([0.42052596, 0.1878385 , 0.20522985, 1.        ])),\n",
       " (7, 6): (array([0, 0, 0, 0]),\n",
       "  array([1.        , 0.12820217, 0.81476641, 0.22417805])),\n",
       " (6, 7): (array([3, 3, 3, 0]),\n",
       "  array([0.76104239, 0.16996937, 0.18570628, 1.        ])),\n",
       " (7, 5): (array([0, 0, 0]), array([1.        , 0.28543164, 0.95210516])),\n",
       " (5, 7): (array([0, 3, 3, 0]),\n",
       "  array([1.        , 0.51594297, 0.14092811, 0.84492576])),\n",
       " (6, 17): (array([1, 0]), array([0.20245015, 1.        ])),\n",
       " (17, 6): (array([0, 0, 0, 2]),\n",
       "  array([1.        , 0.19848815, 0.60853877, 0.34708215])),\n",
       " (4, 3): (array([0, 0, 0, 1, 0, 0, 1, 8, 3, 8]),\n",
       "  array([1.        , 0.509037  , 0.48120191, 0.99189596, 0.4150605 ,\n",
       "         0.54304866, 0.03842939, 0.34909227, 0.40191371, 0.71037507])),\n",
       " (3, 4): (array([1, 0, 4, 5, 1, 4]),\n",
       "  array([0.50714548, 1.        , 0.38895162, 0.13017509, 0.54322892,\n",
       "         0.55715616])),\n",
       " (4, 2): (array([0, 2, 0, 2, 3, 3, 3, 3, 4]),\n",
       "  array([1.        , 0.91633289, 0.93588532, 0.52485683, 0.95609374,\n",
       "         0.29286215, 0.80600394, 0.1886995 , 0.45715257])),\n",
       " (2, 4): (array([1, 0, 4, 5, 1, 4]),\n",
       "  array([0.50714548, 1.        , 0.38895162, 0.13017509, 0.54322892,\n",
       "         0.55715616])),\n",
       " (3, 10): (array([0, 0]), array([1.    , 0.7313])),\n",
       " (10, 3): (array([0, 0, 0, 1, 0, 3, 8, 8, 5, 8]),\n",
       "  array([1.        , 0.97982934, 0.33310114, 0.95622464, 0.57463249,\n",
       "         0.85559538, 0.02660187, 0.48330246, 0.35194276, 0.98348215])),\n",
       " (3, 33): (array([ 0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  7, 10]),\n",
       "  array([1.        , 0.83562058, 0.24786345, 0.5840195 , 0.39332582,\n",
       "         0.02532326, 0.28028345, 0.86227316, 0.78990031, 0.88800818,\n",
       "         0.82563593, 0.19566059])),\n",
       " (33, 3): (array([0, 0, 0, 0, 3, 8, 9, 9, 4, 8]),\n",
       "  array([1.        , 0.9472306 , 0.3082475 , 0.78969988, 0.77119174,\n",
       "         0.69573038, 0.02461703, 0.44724187, 0.70767674, 0.29206232])),\n",
       " (3, 29): (array([0, 0, 0]), array([1.        , 0.23861459, 0.70259074])),\n",
       " (29, 3): (array([0, 0, 0, 0, 8, 8, 8, 8, 0, 8]),\n",
       "  array([1.        , 0.92160762, 0.29990928, 0.99095707, 0.51737324,\n",
       "         0.67691059, 0.02395113, 0.43514379, 0.88558276, 0.88548308])),\n",
       " (3, 28): (array([3, 3, 3, 0]),\n",
       "  array([0.77447063, 0.47229578, 0.30519491, 1.        ])),\n",
       " (28, 3): (array([0, 0, 0, 1, 0, 3, 9, 9, 3, 8]),\n",
       "  array([1.        , 0.89649277, 0.34229251, 0.8446434 , 0.59048851,\n",
       "         0.7725717 , 0.02733591, 0.99327676, 0.94107241, 0.03123237])),\n",
       " (3, 2): (array([0, 2, 0, 2, 3, 3, 3, 3, 4]),\n",
       "  array([1.        , 0.91633289, 0.93588532, 0.52485683, 0.95609374,\n",
       "         0.29286215, 0.80600394, 0.1886995 , 0.45715257])),\n",
       " (2, 3): (array([0, 0, 0, 1, 0, 0, 1, 8, 3, 8]),\n",
       "  array([1.        , 0.509037  , 0.48120191, 0.99189596, 0.4150605 ,\n",
       "         0.54304866, 0.03842939, 0.34909227, 0.40191371, 0.71037507])),\n",
       " (2, 31): (array([0, 0, 0]), array([1.        , 0.65630746, 0.87271346])),\n",
       " (31, 2): (array([3, 3, 0, 2, 3, 4, 4, 8, 6]),\n",
       "  array([0.82142662, 0.70734879, 1.        , 0.8461932 , 0.55648319,\n",
       "         0.45214068, 0.9472584 , 0.29132723, 0.70289422])),\n",
       " (31,\n",
       "  34): (array([ 0,  0,  0,  2,  3,  7,  8,  3,  7,  8, 11,  8, 11, 11, 11, 14, 14]), array([1.        , 0.62400563, 0.83166752, 0.59142439, 0.42542675,\n",
       "         0.42148564, 0.30803361, 0.44201848, 0.61158368, 0.90620594,\n",
       "         0.73643083, 0.9910507 , 0.91327057, 0.32565002, 0.81598296,\n",
       "         0.78181682, 0.28914904])),\n",
       " (34, 31): (array([2, 0, 1]), array([0.58163974, 1.        , 0.96195803])),\n",
       " (31, 33): (array([ 0,  0,  1,  1,  7,  9, 10,  1, 10,  7,  9, 10]),\n",
       "  array([1.        , 0.86363221, 0.29393341, 0.69257023, 0.46643263,\n",
       "         0.03003005, 0.33237927, 0.49798801, 0.93671775, 0.80224013,\n",
       "         0.66608853, 0.46405539])),\n",
       " (33, 31): (array([2, 0, 1]), array([0.58163974, 1.        , 0.96195803])),\n",
       " (10,\n",
       "  34): (array([ 0,  0,  1,  2,  0,  3,  3,  3,  7,  3,  7,  8,  7, 11, 11, 11, 11]), array([1.        , 0.98362334, 0.70607228, 0.43647322, 0.43549638,\n",
       "         0.43146199, 0.31532461, 0.99724638, 0.86619912, 0.92765537,\n",
       "         0.75386177, 0.42661943, 0.93488722, 0.33335799, 0.89316038,\n",
       "         0.80032203, 0.14799652])),\n",
       " (34, 10): (array([1, 0]), array([0.60502158, 1.        ])),\n",
       " (33,\n",
       "  34): (array([ 0,  0,  0,  0,  3,  3,  7,  3,  7,  8,  7,  9,  8,  8, 11, 14, 15]), array([1.        , 0.40888225, 0.8126744 , 0.75459036, 0.55752524,\n",
       "         0.55236039, 0.20184028, 0.38541591, 0.85458689, 0.9864365 ,\n",
       "         0.48254932, 0.79884619, 0.59842428, 0.42676703, 0.35747305,\n",
       "         0.21404344, 0.18946609])),\n",
       " (34, 33): (array([ 1,  0,  1,  1,  1,  9, 10,  1,  7,  8,  9, 10]),\n",
       "  array([0.67196115, 1.        , 0.34761955, 0.81906631, 0.55162528,\n",
       "         0.03551496, 0.39308744, 0.79604357, 0.3421972 , 0.23439048,\n",
       "         0.95347605, 0.27440693])),\n",
       " (33, 15): (array([1, 0]), array([0.19206638, 1.        ])),\n",
       " (15, 33): (array([ 0,  0,  1,  1,  1,  9, 10,  1, 10,  7,  9, 10]),\n",
       "  array([1.        , 0.78689013, 0.6275671 , 0.73934142, 0.49793212,\n",
       "         0.03205806, 0.35482577, 0.38223897, 0.9999769 , 0.06990463,\n",
       "         0.91366968, 0.49539434])),\n",
       " (33, 16): (array([0, 0]), array([1.        , 0.99287252])),\n",
       " (16, 33): (array([ 0,  0,  1,  1,  1,  7, 10,  3, 10,  7,  9, 10]),\n",
       "  array([1.        , 0.82843744, 0.3030369 , 0.5916963 , 0.48087864,\n",
       "         0.03096012, 0.34267348, 0.16365627, 0.9657291 , 0.86530742,\n",
       "         0.779632  , 0.47842778])),\n",
       " (33, 19): (array([1, 0]), array([0.81624428, 1.        ])),\n",
       " (19, 33): (array([ 0,  0,  1,  1,  1,  7, 10,  1, 10,  7,  9, 10]),\n",
       "  array([1.        , 0.80522481, 0.30904109, 0.72816718, 0.98081296,\n",
       "         0.03157354, 0.34946301, 0.2857792 , 0.98486347, 0.96170566,\n",
       "         0.85451933, 0.48790706])),\n",
       " (33, 21): (array([1, 0]), array([0.02621277, 1.        ])),\n",
       " (21, 33): (array([ 0,  0,  1,  1,  1,  9, 10,  1,  7,  8,  9, 10]),\n",
       "  array([1.        , 0.75772509, 0.32132739, 0.75711634, 0.50990318,\n",
       "         0.06565757, 0.36335633, 0.56850668, 0.22462179, 0.20060389,\n",
       "         0.98374247, 0.50730439])),\n",
       " (33, 23): (array([1, 0]), array([0.25672894, 1.        ])),\n",
       " (23, 33): (array([ 0,  0,  1,  1,  1, 10, 10,  1, 10,  7,  9, 10]),\n",
       "  array([1.        , 0.79102505, 0.31271401, 0.73682136, 0.4962349 ,\n",
       "         0.03194879, 0.70723266, 0.71410127, 0.99656846, 0.40624006,\n",
       "         0.28589495, 0.49370578])),\n",
       " (33, 24): (array([3, 4, 4, 0, 3]),\n",
       "  array([0.739196  , 0.44049398, 0.34901883, 1.        , 0.67071037])),\n",
       " (24, 33): (array([ 0,  0,  1,  1,  7,  8, 10,  1,  7, 10,  8, 10]),\n",
       "  array([1.        , 0.96008218, 0.26898562, 0.63378787, 0.42684385,\n",
       "         0.02748123, 0.30416836, 0.88009928, 0.20330281, 0.96368154,\n",
       "         0.46139516, 0.42466838])),\n",
       " (33, 30): (array([2, 3, 0, 2]),\n",
       "  array([0.5779317 , 0.29636602, 1.        , 0.4157685 ])),\n",
       " (30, 33): (array([ 0,  0,  1,  1,  7,  8, 10,  1,  7, 10,  8, 10]),\n",
       "  array([1.        , 0.96008218, 0.26898562, 0.63378787, 0.42684385,\n",
       "         0.02748123, 0.30416836, 0.88009928, 0.20330281, 0.96368154,\n",
       "         0.46139516, 0.42466838])),\n",
       " (29,\n",
       "  34): (array([ 0,  0,  0,  2,  3,  7, 11,  3,  7, 11, 11,  8, 11, 12, 12, 12, 15]), array([1.        , 0.60007315, 0.91482956, 0.72215345, 0.40911036,\n",
       "         0.4053204 , 0.2962196 , 0.65518369, 0.89495154, 0.87145023,\n",
       "         0.7081865 , 0.54259366, 0.5513867 , 0.31316037, 0.83904524,\n",
       "         0.64269327, 0.13902965])),\n",
       " (34, 29): (array([0, 2, 0]), array([1.        , 0.49168336, 0.93942458])),\n",
       " (28,\n",
       "  34): (array([ 0,  2,  0,  2,  7,  9, 11,  3,  7,  8, 11,  9, 11, 11, 11, 11, 11]), array([1.        , 0.55572241, 0.6246646 , 0.96441545, 0.37887347,\n",
       "         0.37536362, 0.27432634, 0.42908658, 0.79544139, 0.54303478,\n",
       "         0.65584523, 0.55358653, 0.81333388, 0.29001504, 0.77703234,\n",
       "         0.69626476, 0.12875413])),\n",
       " (34, 28): (array([3, 3, 3, 0]),\n",
       "  array([0.23709135, 0.5783421 , 0.18686073, 1.        ])),\n",
       " (28, 24): (array([4, 4, 4, 4, 0]),\n",
       "  array([0.82666774, 0.98523846, 0.19515975, 0.88912759, 1.        ])),\n",
       " (24, 28): (array([3, 3, 3, 0]),\n",
       "  array([0.23709135, 0.5783421 , 0.18686073, 1.        ])),\n",
       " (28, 25): (array([0, 0, 0]), array([1.        , 0.66832686, 0.09661268])),\n",
       " (25, 28): (array([3, 3, 3, 0]),\n",
       "  array([0.39534386, 0.48218545, 0.62317113, 1.        ])),\n",
       " (34, 15): (array([1, 0]), array([0.19206638, 1.        ])),\n",
       " (15,\n",
       "  34): (array([ 0,  0,  0,  2,  3,  3,  3,  3,  7,  3,  3,  8,  3,  8, 11, 11, 11]), array([1.        , 0.59424212, 0.93509157, 0.75400494, 0.40513495,\n",
       "         0.40138183, 0.29334117, 0.93665075, 0.59490495, 0.86298217,\n",
       "         0.70130491, 0.94557087, 0.86970984, 0.31011733, 0.83089207,\n",
       "         0.74452611, 0.27535735])),\n",
       " (34, 16): (array([0, 0]), array([1.        , 0.99287252])),\n",
       " (16,\n",
       "  34): (array([ 0,  0,  0,  2,  0,  3,  7,  3,  7,  7,  7,  8,  8, 11, 11, 11, 11]), array([1.        , 0.64085955, 0.8992681 , 0.62552694, 0.8738344 ,\n",
       "         0.43286965, 0.31635336, 0.42211475, 0.97175444, 0.93068187,\n",
       "         0.75632127, 0.58954077, 0.93793731, 0.33444558, 0.89607435,\n",
       "         0.8029331 , 0.29695873])),\n",
       " (34, 19): (array([1, 0]), array([0.81624428, 1.        ])),\n",
       " (19,\n",
       "  34): (array([ 0,  0,  0,  2,  3,  3,  7,  3,  7,  7,  7,  8,  8, 11, 11, 11, 11]), array([1.        , 0.64101217, 0.77257217, 0.49852767, 0.43702125,\n",
       "         0.86594547, 0.3164287 , 0.42459676, 0.97341475, 0.93090351,\n",
       "         0.75650138, 0.59063376, 0.93816068, 0.33452523, 0.89628774,\n",
       "         0.80312432, 0.29702945])),\n",
       " (34, 21): (array([1, 0]), array([0.02621277, 1.        ])),\n",
       " (21,\n",
       "  34): (array([ 0,  0,  0,  2,  3,  7,  7,  3,  7,  7,  7,  8,  7, 11, 11, 11, 11]), array([1.        , 0.60491727, 0.89799692, 0.69569289, 0.41241292,\n",
       "         0.40859237, 0.29861084, 0.61203741, 0.69541354, 0.87848505,\n",
       "         0.71390337, 0.33213869, 0.88533357, 0.31568837, 0.84581847,\n",
       "         0.757901  , 0.28030395])),\n",
       " (34, 23): (array([1, 0]), array([0.25672894, 1.        ])),\n",
       " (23,\n",
       "  34): (array([ 0,  0,  0,  2,  3,  7,  8,  3,  7,  8,  8,  8,  8, 11, 11, 11, 11]), array([1.        , 0.60500889, 0.89767855, 0.69519241, 0.41247539,\n",
       "         0.40865426, 0.29865607, 0.61122134, 0.83651087, 0.87861811,\n",
       "         0.7140115 , 0.33279485, 0.88546767, 0.31573619, 0.84594658,\n",
       "         0.7580158 , 0.28034641])),\n",
       " (34, 24): (array([3, 4, 4, 0, 3]),\n",
       "  array([0.6793464 , 0.80965806, 0.32076024, 1.        , 0.85930318])),\n",
       " (24,\n",
       "  34): (array([ 0,  3,  0,  2,  7,  9, 11,  3,  7,  8, 11,  9, 11, 11, 11, 11, 11]), array([1.        , 0.54236215, 0.65772939, 0.57975687, 0.36976487,\n",
       "         0.36633941, 0.26773119, 0.5389771 , 0.9446068 , 0.72230962,\n",
       "         0.64007788, 0.78069022, 0.79378031, 0.56608542, 0.7583515 ,\n",
       "         0.67952567, 0.25131743])),\n",
       " (34, 30): (array([2, 3, 0, 2]),\n",
       "  array([0.53806561, 0.55184501, 1.        , 0.59403041])),\n",
       " (30,\n",
       "  34): (array([ 0,  0,  0,  2,  3,  8,  9,  3,  7,  8,  9, 10,  9, 10, 11, 11, 11]), array([1.        , 0.58621937, 0.9629695 , 0.7978285 , 0.3996653 ,\n",
       "         0.39596285, 0.28938083, 0.77857848, 0.45494734, 0.73784825,\n",
       "         0.88783693, 0.89230248, 0.85796805, 0.61186099, 0.81967435,\n",
       "         0.7344744 , 0.2716398 ])),\n",
       " (34, 27): (array([1, 0]), array([0.37944941, 1.        ])),\n",
       " (27,\n",
       "  34): (array([ 0,  0,  0,  2,  3,  7,  8,  3,  7, 10,  8, 10, 10, 10, 11, 11, 11]), array([1.        , 0.6223583 , 0.83739179, 0.60042283, 0.42430365,\n",
       "         0.42037294, 0.30722042, 0.45669122, 0.63108866, 0.90381361,\n",
       "         0.92128734, 0.98806011, 0.91085959, 0.64958065, 0.87020518,\n",
       "         0.77975287, 0.14419285])),\n",
       " (24, 30): (array([2, 3, 0, 2]),\n",
       "  array([0.5779317 , 0.29636602, 1.        , 0.4157685 ])),\n",
       " (30, 24): (array([3, 4, 4, 0, 3]),\n",
       "  array([0.739196  , 0.44049398, 0.34901883, 1.        , 0.67071037])),\n",
       " (24, 26): (array([0, 0, 1]), array([1.        , 0.81238516, 0.28299047])),\n",
       " (26, 24): (array([0, 0, 4, 0, 3]),\n",
       "  array([1.        , 0.57520144, 0.22787614, 0.49429951, 0.45611943])),\n",
       " (30, 27): (array([1, 0]), array([0.37944941, 1.        ])),\n",
       " (27, 30): (array([3, 3, 0, 2]),\n",
       "  array([0.38474271, 0.78919129, 1.        , 0.66435908])),\n",
       " (26, 25): (array([0, 0, 0]), array([1.        , 0.20059797, 0.11599298])),\n",
       " (25, 26): (array([1, 0, 1]), array([0.4222803 , 1.        , 0.40249177]))}"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 二阶随机游走（考虑p、q值）\n",
    "alias_edges"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 生成一条随机游走序列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "def node2vec_walk(walk_length, start_node):\n",
    "    '''\n",
    "    从指定的起始节点，生成一个随机游走序列\n",
    "    '''\n",
    "    # 上一步计算出的alias table，完成O(1)的采样\n",
    "\n",
    "    walk = [start_node]\n",
    "\n",
    "    #  直到生成长度为walk_length的节点序列位为止\n",
    "    while len(walk) < walk_length:\n",
    "        cur = walk[-1]\n",
    "        # 对邻居节点排序，目的是和alias table计算时的顺序对应起来\n",
    "        cur_nbrs = sorted(G.neighbors(cur))\n",
    "        if len(cur_nbrs) > 0:\n",
    "            # 节点序列只有一个节点的情况\n",
    "            if len(walk) == 1:\n",
    "                walk.append(cur_nbrs[alias_draw(alias_nodes[cur][0], alias_nodes[cur][1])])\n",
    "            # 节点序列大于一个节点的情况\n",
    "            else:\n",
    "                # 看前一个节点,prev是论文中的节点t\n",
    "                prev = walk[-2]\n",
    "                next = cur_nbrs[alias_draw(alias_edges[(prev, cur)][0],\n",
    "                    alias_edges[(prev, cur)][1])]\n",
    "                walk.append(next)\n",
    "        else:\n",
    "            break\n",
    "\n",
    "    return walk"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[3, 28, 3, 1, 3, 4, 3]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "node2vec_walk(7, 3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 采样得到所有随机游走序列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "def simulate_walks(num_walks, walk_length):\n",
    "    '''\n",
    "    图中每个节点作为起始节点，生成 num_walk 个随机游走序列\n",
    "    '''\n",
    "    walks = []\n",
    "    nodes = list(G.nodes())\n",
    "    print('Walk iteration:')\n",
    "    for walk_iter in range(num_walks):\n",
    "        print(str(walk_iter+1), '/', str(num_walks))\n",
    "        # 打乱节点顺序\n",
    "        random.shuffle(nodes)\n",
    "        for node in nodes:\n",
    "            walks.append(node2vec_walk(walk_length=walk_length, start_node=node))\n",
    "\n",
    "    return walks"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Walk iteration:\n",
      "1 / 3\n",
      "2 / 3\n",
      "3 / 3\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[[3, 33, 32, 34, 29, 32, 33],\n",
       " [26, 25, 26, 25, 26, 25, 26],\n",
       " [14, 4, 13, 4, 14, 34, 14],\n",
       " [19, 34, 32, 29, 34, 32, 34],\n",
       " [29, 34, 21, 34, 23, 34, 31],\n",
       " [4, 13, 4, 2, 4, 2, 4],\n",
       " [11, 5, 1, 4, 14, 4, 1],\n",
       " [17, 7, 17, 7, 17, 7, 17],\n",
       " [25, 26, 25, 26, 25, 26, 25],\n",
       " [18, 1, 18, 1, 20, 2, 8],\n",
       " [9, 33, 24, 34, 9, 1, 12],\n",
       " [32, 33, 23, 34, 29, 34, 15],\n",
       " [21, 34, 21, 34, 27, 34, 15],\n",
       " [31, 2, 20, 2, 4, 14, 4],\n",
       " [23, 34, 9, 34, 28, 24, 28],\n",
       " [1, 4, 13, 4, 13, 1, 5],\n",
       " [12, 1, 2, 20, 1, 13, 4],\n",
       " [22, 2, 20, 2, 1, 3, 29],\n",
       " [20, 2, 1, 20, 2, 1, 2],\n",
       " [30, 33, 3, 2, 22, 2, 8],\n",
       " [33, 9, 33, 9, 3, 33, 9],\n",
       " [28, 34, 21, 34, 30, 33, 24],\n",
       " [24, 34, 9, 34, 14, 34, 31],\n",
       " [27, 34, 15, 34, 27, 34, 32],\n",
       " [7, 17, 7, 17, 7, 1, 5],\n",
       " [13, 1, 5, 11, 5, 1, 9],\n",
       " [15, 34, 14, 34, 28, 34, 24],\n",
       " [34, 29, 32, 34, 32, 26, 25],\n",
       " [5, 11, 6, 11, 1, 3, 8],\n",
       " [2, 31, 34, 15, 34, 23, 34],\n",
       " [16, 34, 32, 33, 16, 33, 30],\n",
       " [6, 1, 12, 1, 12, 1, 9],\n",
       " [10, 3, 10, 3, 29, 34, 31],\n",
       " [8, 2, 14, 4, 2, 14, 34],\n",
       " [23, 33, 30, 33, 24, 34, 28],\n",
       " [31, 33, 3, 28, 3, 1, 4],\n",
       " [18, 1, 18, 1, 11, 6, 1],\n",
       " [29, 34, 23, 34, 21, 34, 19],\n",
       " [34, 23, 34, 28, 34, 28, 34],\n",
       " [28, 34, 32, 34, 24, 33, 30],\n",
       " [10, 34, 28, 34, 28, 34, 9],\n",
       " [27, 30, 33, 9, 3, 1, 5],\n",
       " [20, 1, 18, 1, 3, 2, 3],\n",
       " [3, 29, 3, 29, 3, 8, 3],\n",
       " [24, 26, 25, 26, 25, 26, 24],\n",
       " [1, 5, 1, 8, 1, 5, 11],\n",
       " [22, 2, 22, 2, 14, 34, 14],\n",
       " [19, 33, 24, 34, 21, 34, 31],\n",
       " [14, 2, 8, 3, 1, 5, 1],\n",
       " [16, 33, 31, 2, 4, 14, 2],\n",
       " [32, 26, 25, 26, 25, 26, 25],\n",
       " [2, 4, 14, 4, 14, 2, 4],\n",
       " [13, 1, 9, 33, 3, 8, 2],\n",
       " [6, 11, 6, 1, 7, 1, 12],\n",
       " [8, 2, 4, 13, 4, 2, 31],\n",
       " [4, 14, 34, 14, 34, 24, 28],\n",
       " [33, 3, 9, 34, 28, 34, 28],\n",
       " [9, 33, 24, 34, 28, 24, 34],\n",
       " [11, 6, 11, 6, 1, 9, 33],\n",
       " [5, 11, 6, 11, 6, 1, 8],\n",
       " [25, 26, 25, 26, 24, 34, 23],\n",
       " [17, 7, 17, 7, 17, 7, 17],\n",
       " [15, 34, 15, 34, 15, 33, 31],\n",
       " [30, 24, 28, 34, 24, 34, 32],\n",
       " [21, 33, 16, 34, 28, 34, 28],\n",
       " [12, 1, 12, 1, 3, 29, 34],\n",
       " [26, 24, 26, 24, 34, 15, 34],\n",
       " [7, 17, 7, 17, 7, 17, 7],\n",
       " [18, 1, 2, 20, 2, 18, 1],\n",
       " [10, 3, 1, 9, 1, 3, 33],\n",
       " [22, 2, 1, 6, 11, 6, 11],\n",
       " [21, 34, 16, 33, 31, 33, 9],\n",
       " [17, 7, 17, 7, 17, 6, 7],\n",
       " [31, 34, 15, 34, 14, 34, 15],\n",
       " [34, 9, 1, 18, 1, 13, 1],\n",
       " [2, 4, 14, 2, 8, 1, 3],\n",
       " [19, 34, 10, 3, 1, 2, 8],\n",
       " [7, 1, 3, 2, 14, 34, 15],\n",
       " [4, 13, 4, 13, 4, 13, 4],\n",
       " [23, 34, 24, 28, 34, 28, 24],\n",
       " [33, 16, 33, 32, 29, 34, 9],\n",
       " [12, 1, 9, 1, 5, 11, 5],\n",
       " [1, 20, 34, 21, 34, 32, 1],\n",
       " [8, 1, 2, 8, 2, 3, 1],\n",
       " [11, 1, 6, 1, 2, 4, 2],\n",
       " [6, 1, 5, 7, 17, 7, 17],\n",
       " [29, 3, 8, 3, 1, 8, 2],\n",
       " [20, 2, 1, 20, 2, 20, 2],\n",
       " [24, 33, 24, 30, 27, 34, 32],\n",
       " [30, 34, 21, 34, 24, 34, 29],\n",
       " [16, 34, 23, 34, 10, 34, 10],\n",
       " [14, 34, 23, 34, 15, 34, 28],\n",
       " [15, 33, 32, 34, 9, 33, 3],\n",
       " [13, 4, 14, 4, 13, 1, 2],\n",
       " [5, 1, 14, 2, 20, 2, 8],\n",
       " [28, 34, 28, 34, 29, 32, 1],\n",
       " [26, 25, 26, 25, 28, 34, 16],\n",
       " [25, 26, 32, 1, 3, 29, 3],\n",
       " [3, 8, 2, 20, 34, 28, 34],\n",
       " [27, 30, 33, 31, 33, 9, 33],\n",
       " [9, 34, 15, 34, 9, 1, 6],\n",
       " [32, 33, 23, 34, 28, 34, 21]]"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 测试\n",
    "simulate_walks(3, 7)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "10"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "args.num_walks"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "80"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "args.walk_length"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Walk iteration:\n",
      "1 / 10\n",
      "2 / 10\n",
      "3 / 10\n",
      "4 / 10\n",
      "5 / 10\n",
      "6 / 10\n",
      "7 / 10\n",
      "8 / 10\n",
      "9 / 10\n",
      "10 / 10\n"
     ]
    }
   ],
   "source": [
    "# 生成训练用的随机游走序列\n",
    "walks = simulate_walks(args.num_walks, args.walk_length)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "340"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(walks)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[15,\n",
       " 34,\n",
       " 28,\n",
       " 34,\n",
       " 21,\n",
       " 34,\n",
       " 15,\n",
       " 34,\n",
       " 14,\n",
       " 2,\n",
       " 3,\n",
       " 2,\n",
       " 14,\n",
       " 2,\n",
       " 1,\n",
       " 2,\n",
       " 14,\n",
       " 4,\n",
       " 2,\n",
       " 1,\n",
       " 3,\n",
       " 2,\n",
       " 14,\n",
       " 4,\n",
       " 13,\n",
       " 4,\n",
       " 2,\n",
       " 4,\n",
       " 13,\n",
       " 4,\n",
       " 2,\n",
       " 1,\n",
       " 4,\n",
       " 14,\n",
       " 2,\n",
       " 1,\n",
       " 6,\n",
       " 1,\n",
       " 18,\n",
       " 2,\n",
       " 1,\n",
       " 4,\n",
       " 14,\n",
       " 2,\n",
       " 4,\n",
       " 14,\n",
       " 2,\n",
       " 1,\n",
       " 18,\n",
       " 1,\n",
       " 4,\n",
       " 14,\n",
       " 2,\n",
       " 3,\n",
       " 1,\n",
       " 20,\n",
       " 1,\n",
       " 9,\n",
       " 1,\n",
       " 3,\n",
       " 8,\n",
       " 2,\n",
       " 31,\n",
       " 33,\n",
       " 3,\n",
       " 9,\n",
       " 1,\n",
       " 6,\n",
       " 1,\n",
       " 11,\n",
       " 5,\n",
       " 11,\n",
       " 6,\n",
       " 11,\n",
       " 1,\n",
       " 5,\n",
       " 11,\n",
       " 6,\n",
       " 11,\n",
       " 5]"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "walks[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 将node的类型int转化为string\n",
    "walk_str = []\n",
    "for walk in walks:\n",
    "    tmp = []\n",
    "    for node in walk:\n",
    "        tmp.append(str(node))\n",
    "    walk_str.append(tmp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "340"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(walk_str)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['21',\n",
       " '34',\n",
       " '10',\n",
       " '3',\n",
       " '1',\n",
       " '9',\n",
       " '1',\n",
       " '20',\n",
       " '2',\n",
       " '8',\n",
       " '3',\n",
       " '8',\n",
       " '3',\n",
       " '4',\n",
       " '13',\n",
       " '4',\n",
       " '2',\n",
       " '14',\n",
       " '2',\n",
       " '18',\n",
       " '2',\n",
       " '4',\n",
       " '14',\n",
       " '2',\n",
       " '20',\n",
       " '2',\n",
       " '1',\n",
       " '2',\n",
       " '31',\n",
       " '2',\n",
       " '3',\n",
       " '33',\n",
       " '9',\n",
       " '33',\n",
       " '19',\n",
       " '34',\n",
       " '23',\n",
       " '34',\n",
       " '21',\n",
       " '34',\n",
       " '21',\n",
       " '34',\n",
       " '24',\n",
       " '34',\n",
       " '28',\n",
       " '34',\n",
       " '28',\n",
       " '24',\n",
       " '33',\n",
       " '9',\n",
       " '34',\n",
       " '23',\n",
       " '34',\n",
       " '28',\n",
       " '34',\n",
       " '21',\n",
       " '34',\n",
       " '10',\n",
       " '34',\n",
       " '21',\n",
       " '34',\n",
       " '10',\n",
       " '34',\n",
       " '14',\n",
       " '1',\n",
       " '9',\n",
       " '34',\n",
       " '9',\n",
       " '33',\n",
       " '3',\n",
       " '33',\n",
       " '9',\n",
       " '33',\n",
       " '9',\n",
       " '34',\n",
       " '31',\n",
       " '33',\n",
       " '9',\n",
       " '34',\n",
       " '28']"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "walk_str[1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 利用word2vec训练Node2Vec模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 调用 gensim 包运行 word2vec\n",
    "model = Word2Vec(walk_str, vector_size=args.dimensions, window=args.window_size, min_count=0, sg=1, workers=args.workers)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导出embedding文件\n",
    "model.wv.save_word2vec_format(args.output)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 结果分析和可视化"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 查看 Node Embedding"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(128,)"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.wv.get_vector('17').shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0.30236664, -0.09780354,  0.12115858,  0.13065828, -0.232245  ,\n",
       "       -0.29873204,  0.11774212,  0.19754922, -0.20147781,  0.08265066,\n",
       "        0.24455565, -0.19564456, -0.17269269,  0.2932877 ,  0.33369648,\n",
       "       -0.22264047, -0.10537295, -0.09654865, -0.13396846, -0.02860372,\n",
       "        0.2120018 ,  0.1313933 , -0.01416228,  0.01220561, -0.19349113,\n",
       "        0.24429318, -0.1567784 ,  0.40082496,  0.08022721, -0.09719664,\n",
       "       -0.465937  ,  0.02281205,  0.21917747, -0.15867665, -0.06353302,\n",
       "       -0.24096176,  0.18889761,  0.06183004,  0.11935216,  0.14850563,\n",
       "       -0.05617385,  0.32109106, -0.17453972,  0.03433518,  0.15907413,\n",
       "        0.04823794, -0.1669492 ,  0.03049292,  0.1070277 ,  0.35327938,\n",
       "       -0.02979732,  0.16473056,  0.21975817,  0.04262974,  0.11843763,\n",
       "        0.21907449,  0.14196026, -0.0991497 , -0.12259814,  0.34525687,\n",
       "        0.18713032, -0.27455336,  0.07329775,  0.36861175,  0.13966943,\n",
       "       -0.07878511,  0.00446942, -0.12231281, -0.10443765, -0.28187144,\n",
       "        0.03228798, -0.00682744, -0.1260415 , -0.27122408,  0.23983158,\n",
       "       -0.26151338,  0.00889035, -0.01175355, -0.09469923,  0.11421635,\n",
       "       -0.0720776 , -0.20062698,  0.00343943,  0.06295233, -0.11714716,\n",
       "       -0.07379266,  0.33319739,  0.02263171,  0.30041766,  0.2935606 ,\n",
       "       -0.29077655, -0.12073059, -0.07441909,  0.15953803, -0.04056003,\n",
       "        0.19464289, -0.26337197, -0.47149864, -0.08403782,  0.16127037,\n",
       "       -0.32145083, -0.00886558,  0.29733   ,  0.07030799, -0.09396257,\n",
       "        0.02653675,  0.10540121, -0.1642877 , -0.04429116,  0.11250701,\n",
       "        0.00914967,  0.06654602,  0.0808007 ,  0.02452951, -0.15188275,\n",
       "        0.33855456, -0.04055331,  0.1381498 ,  0.24898969,  0.14678729,\n",
       "       -0.1223058 , -0.20271318, -0.05439379,  0.3270342 ,  0.02889074,\n",
       "       -0.3460155 , -0.07975385, -0.10270078], dtype=float32)"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.wv.get_vector('17')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 查找相似节点"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAb4AAAEuCAYAAADx63eqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAACubklEQVR4nOydeVxN6R/H37duqyhLe5GdkOwMhrLvOyFb9nXsxjBjGMZgxr4vYbIz9p3InjUhe0SoVFq13nvP749+XV3d6rYgnPfr1YvOeZ7nPOdW53Oe7/NdJIIgCIiIiIiIiHwnaH3pCYiIiIiIiHxOROETEREREfmuEIVPREREROS7QhQ+EREREZHvClH4RERERES+K0ThExERERH5rhCFT0RERETku0IUPhERERGR7wpR+EREREREvitE4RMRERER+a4QhU9ERERE5LtCFD4RERERke8KUfhERERERL4rROETEREREfmuEIVPREREROS7QhQ+EREREZHvClH4RERERES+K0ThExERERH5rhCFT0RERETku0IUPhERERGR7wpR+EREREREvitE4RMRERER+a6QfukJiIiIiIh8fYTFJrLn5iseBkcTnSCjkL6UChaF6FbDhqJGel96epkiEQRB+NKTEBERERH5OvANjGSF11POPQ4FIFGmUJ7Tl2ohAI3LmzKiURmq2pp8mUlmgSh8IiIiIiIascU7gDlHH5Igk5OZckgkoC/VZlrrCrjWtfts89MU0dQpIiIiIpIlKaL3gPhkRZZtBQHik+XMOfoAIN+Jn7jiExERERHJFN/ASFzWeROfLCfusTfvPNeBPBmThq4YlK7Fq+V90TIoqGxvPWw9WnqGABjoaLNzSF0cbEy+0OzTI674REREREQyZYXXUxJkchTJiYQfX4Z5zzlItHUI2vgTVqVqIDUxx3rYerV9E2RyVno9ZbVrzc8864wRhU9EREREJEPCYhM59zgUQQDZu9doGxqja2oHgJauAbKIILT0jTLsLwhw9lEo4bGJ+cbbU4zjExERERHJkD03Xyn/r1OsOOa95wEgiwlHnhCDtIgVioT3vFk3nMAlvYi5fTzdGBJgz61X6Y5/KcQVn0ie8DXH9IiIiGTMw+BoZciCRFuKtkFBBIWcd8eXU9CxFRJtKVITc4q1m4gsJoyQrVMoUKGByiowQabgYVDMl7qFdIjC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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pos = nx.spring_layout(G, seed=4)\n",
    "nx.draw(G, pos, with_labels=True)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9872286\n",
      "0.13516873\n"
     ]
    }
   ],
   "source": [
    "# 节点对 相似度\n",
    "print(model.wv.similarity('25', '26'))\n",
    "print(model.wv.similarity('17', '25'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[('26', 0.987228512763977), ('32', 0.8311098217964172), ('24', 0.8069222569465637), ('28', 0.7188161015510559), ('9', 0.5916701555252075), ('15', 0.5865539312362671), ('33', 0.581165075302124), ('29', 0.5746333599090576), ('19', 0.5653637647628784), ('34', 0.5437777638435364)]\n"
     ]
    }
   ],
   "source": [
    "# 找到最相似的节点\n",
    "print(model.wv.most_similar('25'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 自定义相似性距离度量指标\n",
    "from scipy import spatial\n",
    "def cos_similarity(v1, v2):\n",
    "    # 余弦相似度\n",
    "    return 1 - spatial.distance.cosine(v1, v2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "v1 = model.wv.get_vector('25')\n",
    "v2 = model.wv.get_vector('26')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9872285723686218"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cos_similarity(v1, v2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Node Embedding聚类"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 运行聚类"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "# # DBSCAN聚类\n",
    "# from sklearn.cluster import DBSCAN\n",
    "# cluster_labels = DBSCAN(eps=0.5, min_samples=6).fit(X).labels_\n",
    "# print(cluster_labels)\n",
    "\n",
    "# KMeans聚类\n",
    "from sklearn.cluster import KMeans\n",
    "import numpy as np\n",
    "\n",
    "X = model.wv.vectors\n",
    "cluster_labels = KMeans(n_clusters=3, random_state=9).fit(X).labels_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 2, 1, 0, 1, 1,\n",
       "       1, 2, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0], dtype=int32)"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cluster_labels"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 将networkx中的节点和词向量中的节点对应"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "colors = []\n",
    "nodes = list(G.nodes)\n",
    "for node in nodes: # 按 networkx 的顺序遍历每个节点\n",
    "    idx = model.wv.key_to_index[str(node)] # 获取这个节点在 embedding 中的索引号\n",
    "    colors.append(cluster_labels[idx]) # 获取这个节点的聚类结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 2,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 1,\n",
       " 1,\n",
       " 1,\n",
       " 1,\n",
       " 2,\n",
       " 1,\n",
       " 1,\n",
       " 1,\n",
       " 1,\n",
       " 1,\n",
       " 1,\n",
       " 1,\n",
       " 1,\n",
       " 1,\n",
       " 1,\n",
       " 1]"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "colors"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 可视化聚类效果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAb4AAAEuCAYAAADx63eqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAADGVElEQVR4nOyddVxW1x/H30/QiAkCYjd26+zuVsxhzY5Z082cNTf9TWd3zY7ZHbMLRUVFRUVBlBCQjifP7w8mijzAA2Lf9+vFS7n3nHO/9wHu555zviETQggkJCQkJCS+EeSf2gAJCQkJCYmPiSR8EhISEhLfFJLwSUhISEh8U0jCJyEhISHxTSEJn4SEhITEN4UkfBISEhIS3xSS8ElISEhIfFNIwichISEh8U0hCZ+EhISExDeFJHwSEhISEt8UkvBJSEhISHxTSMInISEhIfFNIQmfhISEhMQ3hSR8EhISEhLfFJLwSUhISEh8U0jCJyEhISHxTSEJn4SEhITEN4UkfBISEhIS3xSS8ElISEhIfFNIwichISEh8U0hCZ+EhISExDeF8lMbICEhISHx5REUHY1n8Eui1CrMFErsra0pl9semUz2qU1LE0n4JCQkJCSMQgjBpefPWOl+HbcXfpgqFOiFQCaTIYTA2tSMHypWorNzaWzMzD+1uSkiE0KIT22EhISEhMTnTVhcHK57d/E0PIxYjSbFdhbKhPnUgmYtaVSoyMcyL11IwichISEhkSqhsbG03baJ4NgYNHq9UX3MlUp+a9CYdiWcP7B16UdybpGQkJCQSBGtXs/3e3elS/QA4rVaJvx7guv+Lz6gdRlD2uOTkJCQkEiR00+f8CwiPFH0Yu7c5dXufQitjuwtm2HhXAK/KTOQW1ok9sk7ZQJyc3PitVpmXzjLPy7dP5X5BpGET0JCQkIiRVa4uyXu6enVGkK27cRh6CBkSiUv5s7HqeR4lDlykHfKLwb73wsO5knYKwplz/ExzU4VaalTQkJCQsIgT8PD8Ax+mfi9JjgYhbU1po4OmNjZIjc3QxMckmS29y46oWfdrRsfw1yjkWZ8EhISEhIGuRngj0IuB50OAFP73DiMGAqANiICXUwsJra26OPieP7bHHTRMWRv1Ryb76onjqHV67nk9+yT2J8SkvBJvDdhQeEcWXOKh9efEB0eg2UWC/KVzEOL/o1wLGz/qc2TkJDIIJEqFdq3HFpkCgUKK0uEXk/Itl3Y1KyBTKlAmSMHdq7d0YZHELBwCVbly6F4axYYrVZ9CvNTRBI+iQzjdd2bzTN2cf24BzIZqOPfxPZcO3qLPQsPU6xyYXpM6kTlJuU+oaUSEhIZwUShQE7STCxCryd40zZkchk52rdBJpfjMHQgAIosWZCbmaMNDkaRP19iH6Vc8VHtTgtpj08iQxxZe4ox9aZw5eB1NCpNEtED0Gq0qOM13L3wgF87zGXNhC1IIaMSEl8WtpaWKBVJZSL8yHH0MdHY9XFFJpcT9/ARMR53Es8LrQaZuXmycT4nJOGTSDfH/z7DkhFrUcWqMUbLVLEq9iw8zJoJWz68cRISEplG7XwF0Onf/JFrwyOIvu6OXe/vkf2XoUVotIQfP4lerSHW8x5yCwtMcuVM7GNpYkL3Mp/Xio+UuUUiXfje82No1Z9RxaoTj70SQfjjS2lZVQBeCn8ecgs9egpTijyyggCYW5oxacdoqrWo+Elsl5CQSD9Tz5xi293baPR6Is9d4NW+g8jMTBPP52zfFpXfc6Ldb6KwtiJXNxfMC+RPPG+hNOF6/8FYmJh8CvMNIu3xSaSLXX8eQKvWJn5/Q5wjnBBscQRAJ3Tcx51K1EGGHDdOYifyYCIzJT5WxeaZuyThk5D4guhdviI7PBOWMm3q1MKmTq1kbayrVCJnh7bJjpsqFHQs6fxZiR5IS50S6SA2Ko7T2y6i077x8qooq0MJ3ghZLFGYYoa1LCtWsiwoMCGW6MTz3rd8eP7Q/6PaLSEhkXEs4lUor99A/l9Ig7EoZHIcrLMwrmadD2RZxpGET8Jozu64hEyeeq0tK2yoTD0AVCIODWrMeePWrNPpObD8+Ic0U0JCIpO4ffs21atXp0P+QgysWt1o8TNVKMhjk4VtHbtgbWqadoePjCR8Ekbj5+VPfEzq8ThymRwTmSlCCO7jjhOFMJO9JXwaHT6efh/aVAkJiffkwIEDNGrUiN9//51pv/6K3eOnyP49iz4yEnOF4fAEC6USM4WClkWLs7/r9+S2tv7IVhuHtMcnYTTR4TFGtRNC4Mk1QEYxkntzxUbGZbJlEhISmYUQgnnz5jFv3jwOHDhAtWrV8Pb2ZuzYsbRq1QoTv0B69+rHSvdr3HkZRJxWg4lcTk4LS3qWLU8n51KfdRFakIRPIh3Y5DDu7e0JnqhRUZ7vkMmSL41aZf28YnokJCQSUKvVDBkyhOvXr3P58mXy5cuHVqulZ8+eDBkyhMWLF3Pnzh0cHR35Lm++tAf8TJGWOiWMJn+pvFhYp/4mFy/iCOAZZamOXJZ8OURpqqRIhQIfyEIJCYmMEhoaSpMmTQgODubChQvky5cgbDNnzsTGxgY/Pz8GDRqEo6PjJ7b0/fli4viE/hVoH4M+CmRmoLBHpvw8y9p/rcTHquicu1+yfT5/4UMogZSRVcdPPOYRt1G8tZhQjHI4yBLiekzMTFj3YAG589t+VNslJCRS5sGDB7Rq1YoOHTowe/ZsFP/t4V26dIkOHTqwfft2OnfuzKNHj8iaNesntvb9+ayXOoUQoLmJiFkDqnMgMwUEIAOhRSjskVkNAIuWyGSf95ry14C5pRlNetfn0MoT6DRvvLscZQVwpAAAeWVFyEvKLyTO3xWTRE9C4jPixIkT9OjRg99//52+ffsmHo+MjKRnz56sWLGC+fPn8/PPP38Vogef8YxP6CMQYf1B6wUingTBM4DMEpAjy7YUmVl1w20kMo2AJ0H0LzsGVWz6s62bWZgy6/AEytUt9QEsk5CQSC9Lly5l+vTpbN++nbp16yY516tXL8zNzXF1daV79+54eXlhbv51TDA+yxmf0IchQjuCLgjQpNE4NuGfsAGQbQEy8/of3sBvGIdCuZmw5Ud+6/YXqjh12h3+w8zSjF7TXCTRk5D4DNBqtYwePZoTJ05w8eJFChcunOT8tm3buHLlCu7u7jRr1ozp06d/NaIHn+GMTwgtIrQTaB+RpuglwxxZzm3ITJw/hGkSb3Fp3zV+67EArVqLTptyUKtMLsPU3IS+s7rT4ceWH9FCCQkJQ0RERNClSxeEEGzfvp1s2bIBoNHp0AtBkL8/lStX5vDhwwQEBDBhwgRu3bqVuO/3NfD5CV/8CUTET4kzOYBT52PZsD2Svxfb4+GponHn54nnIqL0HNueh3rf/ecib/od8hzrP7LV3ybPHwWw688DnNx0DpmMJE4vphamaNRqshfLwvQNEyleuXAqI0lISHwMnjx5QqtWrWjQoAF//fUXnqEhrL5xnZNPvNHoE15g9TodDgKmt2nP8LbtmPvHH7Rs+XW9tH52wqcP7Qwaj8Tvm3R5zoWr8bRtZsXW5Q5J2up0gtyln3DjRD7yOb1OgmqGzPY4MkXSthIfjrjoOM5sv8ST275EhkZhldUSp+KO5K2cm9YdWuHr64uZmdmnNlNC4pvm/PnzdO7cmcmTJ1O3cydGHTuMf1Qkqv9meu9iCmjj41nUvhPNixb/+AZ/QD6rPT6hfQqaB0mOHd/uxPrtkRw7nTxriNvNeHLnUrwlegACEbsJWZafPrC1Eq+xsLageb+GBs+VLl2af/75h+7du39kqyQkJF6zfv16xo0bx6ZNm7AoUYwuu7YRp9Wm2kcNYG7OmBNHeREVxQ8VK38UWz8Gn1cAu/o66THp+JlYmtSzencQUJ3NVLMkMs6wYcNYvHjxpzZDQuKbRK/XM378eGbMmMHZs2dxLF+OQQf3pSl6bxOv1TLvykX2Prj3AS39uHxewiciSY9Dy/EzsTSuZyD9lT4q82ySeC9atWrFixcvuHHjxqc2RULimyI6OpoOHTpw5coVrl69SsmSJRl17HAS0Yu5cxe/abN4Nnk6UVfcAFAHveTFH3/iO3Eq4adOAwniN+HfE8Sojffk/pz5vIQPJcaa9CpMx+17KurVsEh+UvZZreB+0yiVSgYPHsySJUs+tSkSEt8Mfn5+1KpVixw5cnDixAly5cqFR1Ag/lGRiW30ag0h23aSu39fHIYPJvSfvehiYgndvovsbVvhNH4sESdOoXn1CgAZMvZ63f9Ut5SpfF7CJ88JMuMq9Z48H0uNyuZYWhq4BXnOTDZM4n3o168fu3fvJjQ09FObIiHx1ePm5kb16tXp0aMHa9aswfS/enhrblxH9VY9PU1wMApra0wdHTCxs0VuboY6IABdbCyWJYqjsMlC7kH9kf8Xvxen1bDS/RqfmT9khvi8hM+sLgjj1p4N7+8BWCKz6JK5dkm8F7a2trRt25a1a9d+alMkJL5qtm/fTsuWLVm2bBk//fRTkuooJ554J/HeNLXPjcOIoQBoIyLQxcSiffUKhbUVAYuX4TtxKvHeT1BYvtlOComNwSci/KPdz4fisxI+mTwLmLcA0g6UPHE2lsZ1k+/vxaviidLU/gDWSbwPw4YNY+nSpeiMrOAsISFhPEIIpk2bxrhx4zh58iRt2rRJcl6j0yXG6b1GplCgsLJE6PWEbNuFTc0ayOQKVD6+5GzfljxjRhJ+9Diat1ZqlHI5YXFffj3Nz0r4AGRWfYCky529u9gki+HzdS9IuVJJY8O0Ojnrt0eS2z4/06ZNQ6VKfz5JiQ9D5cqVyZ07N4cPH/7UpkhIfFXExcXRvXt3jhw5wtWrVylXLnnxZ0NxegBCryd40zZkchk52rcBuRxTRwdM8ziizJEdUwd71H4vkvTR6vUf5D4+Jp+f8JmUAEtXwIDTSqooUJrmwXWwO66ursyaNQsHBwfWr1+P/iv4QX0NSKENEhKZS2BgIPXr10cmk3H69Gns7e0NtjNTKpEbKAodfuQ4+pho7Pq4IpPLUebIjl71xnNT6PTwVqoyvRBk/Qpydn52wgcgyzIGLNpgvPiZgDw3shybsc7iwIoVK3j48CFly5Zl4MCBFC5cmGPHjn1IkyWMoHPnznh4eODl5fWpTZGQ+OLx8PCgWrVqtGjRgs2bN2NhkfrzspJD0gKy2vAIoq+7Y9f7e2TKBE94s7xO6GNjiX/qgyY0FM3LYMzyOSX2UcrlFM6eI/Nv5iPz2aUse40QAhG7GaIXAFoQyTO3gDkgwKwesqwzkcmT14o6ffo0ffr04eXLl5QtW5YlS5ZQqVKlD22+RApMmjSJqKgoFixY8KlNkZD4Ytm/fz/9+vVj8eLFdOlinDPfaZ8nDDmwF9V/j/zIcxd4te8gMjPTxDY527dFkSULwVt3gNCTrXFDbGrXBMBMoWBApSqMql4z82/oI/PZCt9rhNCC6jQiZhVoH/5Xm08J8uxg2Q2ZZVdk8tTfQHQ6HStWrODnn39Gp9PRpEkT/ve//yUrxSHx4fHz86N8+fL4+PiQJUuWT22OhMQXhRCCuXPnsmDBAvbs2UPVqlWN7uv34jm1N6xBbm2doWubKhSc6/0DdlYZ6/858dkLX2YSFhbG5MmTWbduHTKZjF69ejF16lTs7Ow+tWnfFB07dqRRo0YMHjz4U5siIfHFoFarGTRoEDdv3mT//v3kzZvX6L43btygfv365KxaBbN2rZLE8xmDhVJJz7Ll+aVW3bQbfwF8lnt8H4rs2bOzePFirl+/TtWqVdm6dStFixZl+vTpREdHf2rzvhleO7l8Q+9cEhLvRUhICI0bNyYsLIzz588bLXoqlSqhGkPdumTPnp37Bw8xpkYtzJXGZ7eyUCppULAw42vWyaj5nx3flPC9pmTJkpw6dYqNGzeSI0cOVqxYQaFChVi6dCkaTdq5QoVQI+KPoI9ahD5iOvqovxCx/yD0kngaQ7169QA4c+bMJ7VDQuJL4P79+1SvXp0aNWrwzz//YG3kUuW1a9eoVKkSly5dwsTEhKNHj2JmZsYPFSszq0FjzJVKzOQpS4CZQoGpQkHPMuVZ0KylQa/QL5VvaqnTEGq1mkWLFjFjxgyyZcuGQqHg999/p1OnTkmyHgAIXSAidiPEbgXEf8VyX398loAeLFohs+qLTFnkI9/Jl8WyZcs4efIk//zzz6c2RULis+X48eP07NmTOXPm0Lt3b6P6xMfHM3XqVDZs2MDcuXP566+/6N+/P4MGDUrSLlqtptu0qfja5kBnaoryPxHUC4FSLse1XAV6lCn3Vezpvcs3L3yvCQoKYuLEiezevZssWbJgZ2fHnDlzqF+/PgBCdQkRPuS/lGqpZShXACZgMwW5ZaePYfoXSXR0NPny5ePWrVvky5fvU5sjIfHZsXjxYmbOnMnOnTupXdu4bFSXLl2ib9++lC1blsWLFzNv3jzu3bvHvn37kr3Iq1Qq8uTJg7u7O/qsNoTFxaHV68lqbk6hbNkxUaSdQetLRRK+d7hx4wYjRozgxYsXqNVqypYty6J5PSiUfQ4Qn46RzCHLL8itun0oU794fvzxR6ytrZk1a9anNkVC4rNBq9Xy448/cubMGQ4cOEChQoXS7BMbG8ukSZPYunUrixcvpmPHjpw5c4bu3bvj4eGBra1tsj67du1i+fLlnDx58kPcxmfNN7nHlxoVK1bk/PnzzJ49G7lcjkwfiJ3pNN4VPQ9PFXbO3olfZnkfceZS7Fst4iFqNkJ986Pa/yUxZMgQVq9eTXx8el4oJCS+XsLDw2nRogXe3t5cunTJKNE7e/YsZcuW5eXLl9y5c4eOHTsSFhaGq6sra9euNSh6kFCV3djl068NacaXCrGxsdw415VKJe9jZpbyxq5OJ8hd+gk3TuQjn9M7ZZVMayHPIVUlSImmTZvSs2dPvv/++09tioTEJ+Xx48e0bt2axo0bM2/ePJRpeF5GR0fz888/s3fvXpYuXZqYmFoIQZcuXXBwcEgxUURAQAClSpXCz88PKytDVW6+bqQZXypYWCj5roJfqqIH4HYznty5FMlFD0DthtAFfiALv3yk/J0SEgmztlq1ajFixAgWLlyYpuidPHmSMmXKEBsby507d5JUY/j777+5d+8ev//+e4r9N2/eTIcOHb5J0QNJ+FIn/jhvvDZTJuXagAmI2G2ZaNTXRYsWLXj58iVubm6f2hQJiU/C2rVr6dy5Mxs3bkwzqUNERAQDBgygb9++LFu2jLVr15I9e/bE897e3owdO5YtW7akmLtTCPFNL3OCJHypIrQP/wtZSJ3jZ2JpXC95bcAE1KC5nbmGfUUoFAqGDBnCkiVLPvi1dDod3h4+3Pz3DjdO3eHxrafotFJ9QIlPg06n46effmL27NmcO3eOxo0bp9r+yJEjlClTBplMxt27d2nWrFmS81qtlp49ezJx4kTKli2b4jju7u7Ex8dTs+aXn3Mzoxgfvv8tog9Ls8mrMB2376moVyOVzOj6qEw06uujb9++FClShODg4BQ34t+HsJcRHF51gt0LDqOJ1yBX/BevpNdjYqqk3fAWtBrYmOy5s2X6tSUkDBEdHU2PHj2IjIzkypUr5MyZM8W2YWFhjBo1irNnz7Ju3ToaNmxosN3MmTPJkiULI0aMSPXa69evp1evXsnCG74lpBlfasjSTqJ88nwsNSqbY2mZykcpT2k2KAGQM2dOOnTowOrVqzN1XCEEW3/fQ4/8g9kyazeRIVHERccTExFLTEQscVHxRIZGs+33PfQoOIRNM3dJadQkPjjPnj2jZs2a2NnZcezYsVRFb9++fZQuXZosWbJw586dFEXv0qVLLF++nPXr1yNPJRuLSqVi27ZtuLq6vvd9fMlIwpcKMmU+kKVe4yrN/T0hB0XaLsnfOkOHDmXZsmVotdpMG3Ppj2vZMvMfNCoN6viUU9Gp4zVo4jVs/2MvC4asksTvIyOEIEqlIlIVn2Kl8K+FK1euUKNGDXr16sXKlSsxNTU12C4kJITu3bszduxYtm7dyqJFi1JMVRYZGUnPnj1Zvnw5jo6OBtu85sCBA5QrV478+fO/9718yUjClxrmLUCkXr39xNlYGtdNeUYXF6/jrxWBhIWlvWz6LVOxYkXy5s3LgQMHMmW83QsOcmTtaeJjVUb3iY9RcWrjOXbM3ZcpNkikjBCCi36+9N77D8UWz6fSqqVUWbWMYovn02XXNk499UanT/1v70tj69attG7dmuXLlzN69OgUlxp37dpFmTJlcHBwwMPDgzp1Uk8OPXz4cBo1akS7du3StOFbd2p5jRTHlwb68J8g/gCQsT/Cm3dV9B5lQ1BQEOPGjWPYsGGYm5tnrpFfCVu3bmX16tWcOnXqvcaJi4mnc+4fUL0leq9EEP74UlqWUL8sQDzjMXeQI6cEFckpy53Y1szClB2Bq7HMkvpsXyJjXPZ7xpgTR4hUqYhNISm8lYkJZkolvzdsQqNCX3beW71ez7Rp09iwYQP79+9P0fEkKCiIoUOH4unpydq1a6lRo0aaY2/fvp0pU6Zw48aNNEMTAgICcHZ25vnz599sGMNrpBlfGsis+gGGlyPSxgKfl815+vQpERERrFq1imLFirF+/Xp06ayH9S3QsWNH7t27x717995rnNNbLyKTv3mbviHOcYuLiP9eXjRCzRM8qUYjSlOVB9xI0l8ml3Fy47n3skHCMAcePqDfgT0ERkenKHoAMRoNr+LiGHH0EH97fLnZj2JjY+nWrRvHjx/n6tWrBkVPCMGWLVsoW7YsRYsW5ebNm0aJ3rNnzxg+fDibN282Ssi+9di9t5GELw1kJiUgy/g09/qSYwEW7enYfTkRERGMGTMGX19fgoODmTZtGuXKlePgwYPSftJbmJqaMmDAgPcKbRBCsH3OXuKj36RBqyirQwkqJn6vIg4H8mMqM8OabMQRk+TnEB+jYvvcfdLPJpO57PeM8SePEZ+Ofdx4rZbfL57jyOOHH9CyD0NAQAD16tVDqVRy+vRpcufOnayNv78/bdu2Zfbs2Rw6dIjZs2cbtSKk0+lwdXVl1KhRVK5cOc32UuxeUiThMwK5VQ+wHgUYt0QZEysIjKiOzGYKkBCr9ttvvxEVFcUPP/zA8+fP8fHxYcCAAdSrV48rV658QOu/LAYOHMjWrVuJiIjIUP+YiFhe+gan2sZalpVCMmcAgnhOFrIn228JCwwjMlQKQ8ks9EIw8tjhJKIX5/WIlxu3JH4f7X6TZ5On82zSNKLcriUej9dqGXfiKKpMdHz60Ny8eZNq1arRpk0bNm3alEzMXgtR+fLlqVChAtevXzdKwF7zv//9DyEE48aNM6q9u7s7cXFx1KpVK1338bUiCZ+RyK16I8uxGkyqAmbAu+nJFIA5KItz/4UrNZsdJyIiMkkLExMTFi1aREREBJ07dyYoKIibN2/SsmVLOnbsiJeX10e6m88XR0dHGjduzN9//52h/lFh0ShNjQtP9RVe3OMaBSmR7JzSRElUWEyGbJBIzoVnvsRq3pTzCliygqCVa0CXsPysi40ldNducg/6Afthg3i1Zz+6mKSf/5cy69u7dy9NmjThzz//ZNKkScleqvz8/GjRogULFizg+PHjTJs2DTMzM6PHd3d3588//2Tjxo0ojCwd9Hq29y3H7r2NJHzpQGZaFXnOTchyHQFLVzCpDspSYFIFLDohy7kDea4DVK09mZYtWzJgwACDy2WWlpasW7eOV69e0bRpU8LCwjhx4gRVq1Zl0KBBBAQEfIK7+3x4nb9TnwGvPoVSgbErlPllxalEXe5xHY1IWmNRCIFCKf15ZBYr3N2IeWtPz2HoQHK6dEz8PvauJ2b582OWxxFT+9yYFShA7N03e70xGg3Lr3/eae2EEPzxxx8MGzaMI0eO0Llz52TnV65cScWKFalVqxZubm6UL18+XdeIiYmhe/fuLFy40Og6llLsXnKkv+wMIFM6IbcZjzzn38hz7UGeczPyrDMS9gP/Y+7cuTx48IC1a1OuzJA1a1Z27txJYGAgtWrVIioqim3btlG8eHEmTZqU4eW+L51atWphbm6eIe9Om5xZ0KpTXxJ7KV7wXDwBILvMFjlyYolO0kar1mKTM+0EBhJpo9HpcHvxPPU2gUGY2L3J2mNimwtNUFCSNj4R4QTHfp6zcJVKRZ8+fdi+fTtXrlxJtmz59OlTGjVqxOrVqzlz5gwTJ07ExMRAUvs0GDNmDNWqVaNr165G95Fi95IjCd8HwsLCgm3btvHzzz/z4MGDVNva2dlx+PBhnjx5Qvny5YmKimLx4sUULFiQBQsWoFIZH4v2NSCTyTJctcHc0ozStZIvXb6NAgXP8UYntESLCHRosSRpcHDxKkWwspEy7mQGESoVylSyiQDoY+OQv7XcJzMzRR+XtE6jiVxOeNznV7sxODiYRo0aERkZyfnz53Fycko8p9frWbx4MVWqVKFp06ZcunSJUqVKZeg6+/bt4/jx4+n+u5CcWpIjCd8HxNnZmVmzZtG1a1ejiq0WKFCAM2fOcP/+fYoVK0ZYWBhTpkyhUKFCbN68OUNLf18q3bt35+LFi/j4+KS7r8tPbbGwTtkRKafMnpzk5iJHuMVFSlIZE9mbkBWLLOa4jGubEbMlDJCw3J/63pLc0hL9Wy94QqVGbpn0xUOGDL0R1VI+Jp6enlSrVo3atWuza9euJKECjx49ol69emzdupWLFy8ybty4NMsNpURAQAADBw5k48aN2NjYpKvfxYsX6dChQ4au+7UiCd8Hpn///hQpUoSff/7Z6D4lSpTAzc2N69evky9fPvz9/Rk0aBClS5fm2LFj34SbvZWVFb169WLZsmXp7lu5aTnMrZIKn6OsAGVk1RO/LyorSx1Za2rJWmAvy5ukramZCdVaVkQic7AxM0OjTz1u1cTBPsnSpiboJSb2Sd3/NXodWdPhBPKhOXr0KPXr1+fXX3/lt99+S8yRqdPpmDdvHjVq1KBDhw6cO3eO4sWLZ/g6er2e3r17M3DgwHRXVJBi9wwjCd8HRiaTsWrVKvbs2cPBgwfT1bdSpUrcuXOHM2fOYGdnx4MHD+jQoQO1atXi+vXrH8jiz4fBgwezdu1a4uLi0tVPLpczafsozCzSn3jAzMKUidtGGe0tJ5E2ZkolJXOlXnXDspQzKl8/VM9foA4MROX7DEvnkkna5LS0JLeV4XyVHxMhBIsWLaJPnz7s3r07idPIgwcPqF27Nvv37+fKlSuMHDnyvX+XFi1aRGRkJJMnT063ndIyp2Ek4fsIZM+enU2bNvHDDz/g7++f7v5169bF29ubAwcOkD17di5fvkzt2rVp164djx8//gAWfx4UKVKEqlWrsm1b+gv5lq3jzM+bRmBmabz4mVmY8tP6YVRoUCbd15NInUGVqmKVijOHwtKCnC4dCFqxhoBFy8nRoS0KqzdLnRZKJf0rVvnk7vgajYahQ4eyYsUKLl26lBgXp9Vq+f3336lVqxY9e/bk33//pUiR90+1dufOHWbOnMmmTZvSvUwqxe6ljJSr8yMybdo0zp07x/HjxzP8FiiEYNu2bYwYMYLQ0FBMTExwdXVl1qxZ2NnZZbLFn54jR44wceJE3N3dM/TQu3vxAf/ru5RQ/1eo4tQIfdJfd5kMtOhwKujIT+uGUqZ2yRRGkngf1DodVVYtJUqtTruxAcwUStx+GESWT7jUGRYWhouLCyYmJmzbti1xr+3OnTv07duXbNmysWrVKgoUKJAp14uPj6dKlSqMGTMmQ7O2YcOGkTt37nTPFL8FpBnfR2TixIloNBrmzp2b4TFkMhndunXj5cuXLFu2DHNzc9asWUO+fPmYMGECUVFfV7aRpk2bJhbrzAila5Zg3YMFzD01ldodq6M0UwICmUyGmaUpNdtXQ1k5ngaTKkui9wExVSiYVq8hZml4dxrCQqlkTI2an1T0Hj16RI0aNShdujT79+/HxsYGjUbD9OnTadCgAQMHDuT48eOZJnoAP//8MyVLlqRXr17p7ivF7qWONOP7yDx79owqVaqwf/9+qlWr9t7jvd5I//XXX4mPj8fc3JxZs2YxdOjQDMUJfY7Mnz+f69evs3nz5vcea926dZw5fYa169YmzrqPHj3K+PHjuXXr1idfSvuaefDgAU0m/oJF3VqknJ46KRZKJS6lyjC1boMPaltqnDlzhq5duzJt2jQGDhwIJKQk69OnD46OjqxYsYK8efOmMUr6OHbsGP379+fWrVvkyJEj3f137drFsmXL3rvSydeKNOP7yOTLl49ly5bRvXv3TAlQVygU/PTTT4SHhzNx4kS0Wi1jxowhd+7cbN68+avwAO3duzeHDx8mMDDwvccKDAzEwdEhyVJz06ZN0Wg0nD59+r3HlzCMl5cXDRs2ZEabdsxq1BRzpRLLVF7MLJRKzBQKRlWv+UlFb/Xq1XTp0oXNmzczcOBAVCoVkyZNomnTpowaNYpDhw5luugFBwfTt29fNmzYkCHRAyl2Ly2kGd8nYtCgQURGRrJ58+ZMnWXExcUxYcKExJRfDg4OrFu3jsaNG6drHD+vF7ifuE3Uq2jkcjk2ubJQo3UlcuXJmWm2poeBAwfi5OT03vsVI0eOJH/+/IwaNSrJ8ZUrV3LgwIFMK4Qr8YbXojdz5szEh3GMWs0+r/uscL9GcGwMSrkcGaDV61FFRtEhf0EmdeiIjdmnqV2p0+kYN25c4u9E8eLFcXNzo2/fvhQpUoRly5bh4OCQ6dcVQtCuXTuKFy/OnDlzMjSGVHfPCITEJyEmJkY4OzuL9evXf5DxIyIiRN++fYVcLhcymUyULFlSuLu7p9pHq9GKc/9cEUOr/SxaWHYXLSy6i0byTqKxorNoadVDNDfvJn5uNlPcOHVb6PX6D2J3Snh4eIg8efIItVr9XuN06dJFbNmyJdnx2NhYYWtrK7y8vN5rfImkeHl5iTx58oi1a9caPK/X68XziAhxJyhQeAQGCN/wMDFn7lzRv3//j2zpGyIjI0WrVq1E/fr1RWhoqIiNjRU//fSTsLOzE1u2bPmgv/vLly8XFSpUEPHx8RkeY+7cuaJv376ZaNXXhyR8n5Dbt2+LXLlyfdCHbUhIiOjUqVOiANaoUUN4e3snaxcdHi2G1/hFtLLuIRrJOqX61cq6h5jR5U+hVr2fCKWXOnXqiJ07d77XGHXr1hWnTp0yeG7SpEliyJAh7zW+xBsePnwonJycxJo1a9LVz9vbW9jZ2QmtVvuBLEsZHx8fUaZMGdG/f3+hVqvFxYsXRfHixUXnzp1FUFDQB732/fv3Ra5cucS9e/cyPIZerxelSpUS586dy0TLvj4k4fvELFmyRFSsWPG93vCM4fnz56Jp06ZCJpMJmUwmWrRoIV6+fCmEECI2Klb0KfmjaG7eNU3Re/3V0rK7GNdk+kd9OO3YsUPUrVv3vcYoUaKE8PT0NHjO399fZM+eXYSGhr7XNSSEePTokXBychKrVq3KUP/y5cuLs2fPZrJVqXPp0iXh4OAg5s+fL6KiosTIkSOFvb292LVr1we/tkqlEhUrVhRLly59r3GuXbsmChUq9NFXZL40JOeWT8zgwYPJmzcvEydO/KDXyZMnD0ePHk10yz5y5Aj29va4uroytcNcgnxeolEZX+hTFafG86IXq37a+AGtTkq7du149OgRd+7cyfAYgYGBBithAzg4ONC6dWtWrlyZ4fElwNvbmwYNGjBlyhR++OGHDI3RoUMH/vnnn0y2LGU2b95M27ZtWbVqFRUqVKB8+fIEBwdz9+5dOnbsmPYA78nUqVNxdHRk0KBB7zWOVHfPOCTnls+A0NBQypcvz6pVq2jWrNlHueadO3fo2bMn3nd8qEpDFBgOqI8RkdzhKiriyU8xCsiS5hw0NTdlR8BKrLJ+nE30GTNm8OLFC5YvX57uviqViixZshAfH5+YV/Fdbt26RatWrXj69OlXEw7yMfH29qZ+/fpMmjSJAQMGZHgcT09PmjVrxrNnz9L1ENfq9bi9eM7LmBjUOi02ZuaUyZ2bPFkMJ3bW6/VMnTqVTZs2sW3bNv7++2/27dvH0qVLadOmTYbtTw9nzpyhe/fu3Lp1672SUKhUKvLkyYO7u7tUgigNMpYqXCJTyZkzJxs3bqR79+7cuHEDe3v7D37NMmXK4OHhwS8dZnBtr0eK7e5zg6KUwZpsXOYYuYUTFrI3IidXyDj+91naD2/xwW2GhKTfJUuW5Pfffydbtmzp6hsUFISdnV2KogdQvnx5ihYtys6dO+nevft7Wvtt8eTJExo0aMCECRPeS/QgobKJlZUV169fp0qVKmm2fxkTzabbHmy8fRNdwhYOeiFQyOVodDoqOjgysFJVauXLj/w/IY2NjaVXr174+/szZ84cunTpQoMGDbhz5w7Zs2d/L/uNJSwsDFdXV9asWfPemZekunvGIy11fibUq1ePfv360atXr49WfkgVp+LOcS9kKZSMiRexaFCTU2aPmcycCtRCSdJZUHyMil1/frwQAHt7e1q0aMH69evT3TcoKMiol4pRo0Yxf/78ryIG8mPx9OlTGjRowM8///zey3WQkKHI2OXOXffuUnf9GlbduEaESkW0Wk2MRkOcVku0Wo1Kp+Pycz+GHt5P222bCI+Pw9/fn7p16yKXyylWrBhjxoxh+fLlrF279qOJnhCCQYMG0a5dO5o3b/7e423YsEGK3TMSSfg+I6ZOnUpUVBTz5s37KNcL9AlGrkj5VyCGSEwxw12c5aw4QBghSerWvSbYLxSdNvWyM5nJsGHDWLJkSbpfEAIDA40SvlatWhEeHs7FixczauI3hY+PD/Xr1+enn35i8ODBmTbua+FL7QVk3U13ppw5hUqnRaVL/XcwRqPhYWgITTespVrdOjg7O3Px4kXMzMy4e/fuR9tmeM3GjRvx9PTkjz/+eO+xAgMDuXDhglR3z0ikpc7PCKVSyebNm2lQsQnPDoYS/CSM+Jh4TM1MsM2bi3bDm1OnU3VMzdNfbscQMRGxyOUp759oUBNBKFVogAmmXDKw1AmgNFUQExmLTY4smWJXWlSvXh0bGxuOHz+erodVUFBQio4tbyOXyxk5ciTz58+XMtunga+vL/Xr12fs2LEMHTo0U8euVKkSarUaT09PSpcunez8aZ8nzL18gXit8U5ZGr2elzHRWPbsxvkNm9mwYQMNGzbMTLON4smTJ4wZM4ZTp05hYWHx3uNJdffShzTj+4z4d+sFJjeYS4n4Stw794iQ56FEh8XwKjAcr2uPWThkFZ1y/8CqnzehURub7TBlzC3N0ljOk2FNVrLIsmEus8QaGyIJS9ZKp9VjbvnxEgjLZDKGDh3K4sWL09XP2BkfQK9evTh79ixPnjzJiInfBK9Fb/To0QwbNizTx09ruXPWuTNJRC/6+g2eTZ2B3/TfiPN6CEDMnbv4TZvFs8nTibriljCuUok+qw3Ljxz6JKKn1Wrp2bMnEyZMoGzZsu89npDq7qUbSfg+A4QQrBq3kXn9lxHkG4xWpTO47xYXHU9cVBz7Fh1hdJ0pxETGZviaAQEBnLp4ktjolIu8WmCJjjfLRwKB3MCvjJmFaabNQo2lW7duXL16FW9vb6P7GDvjA7C2tqZfv34sXLgwoyZ+1Tx79oz69evz448/Mnz48A92nQ4dOrB79+5kxz2CAgmIflOJRBcbS9jho+T5aTS2rj0I2b4LvVpDyLad5O7fF4fhgwn9Zy+6mIS/GZ1czt+edz+Y3akxa9YsrK2t+fHHHzNlvBs3bhAbGyutTqQDSfg+AzbP+of9y46hijWuVpkqTo23hw8Tms9CqzFumScqKoqDBw8ycuRISpcuTalSpTh26gh2xVLeyM9CdjSoCRehxIkYYonChqTtlSYKmvX7+EmELSws6NOnD8uWLTO6T3pmfJCwl/j3339nSjLxrwk/Pz/q16/PiBEjMu3hnRLfffcdQUFByQour75xPcmeni48AusqlVFYW2GaxxHtqzA0wcEorK0xdXTAxM4WubkZ2pCQxD7uAS94ERX5Qe1/l8uXL7Ns2TLWr1+fqndxepBi99KPJHyfmMe3nrJt9h7iY1SJx16JIO4KtyTt3j2mUWnxvuXDzv/tNziuRqPh0qVLTJs2jdq1a+Po6Mj8+fPJnTs369atIzg4mF27djF6wVAsrA0nApbL5JSiCne4wnVOU4QymMmS7keoNWrCrALRpmOfJbMYPHgw69evJzbWuJlvemZ8AHnz5qVZs2asWbMmoyZ+dTx//pz69eszbNgwRo4c+cGvp1AoaNeuXbJZn7v/C/RvLdObOjqQvXkTAGJuemDqlAdT+9w4jEjYd9RGRKCLiUXxVgiMiULBnaCgD34Pr4mMjKRnz54sW7YMR0fHTBlTqruXMSTh+8TsmncQjfqNaNwQ57jFRQT6VI9Bwszvn78OodPpEEJw//59Fi1aRJs2bbC1tWXo0KHExMQwefJkgoKCOHXqFL/88gtVqlRJLMtToWEZsuSwJqWXxZyy3NSWtaS2rBV5ZUWSnFMo5ZjaKvj1jynY29vz999/f9QQgIIFC/Ldd9+xZcsWo9qnd8YHCaENCxcu/CTC/rnxWvQGDx6crLrFh8TQcmeMxvDqSMS/ZwjZsp1sTRohUyhQWFki9HpCtu3CpmYNlFnfBLLr9HoiVfEf1Pa3GTFiBA0bNqR9+/aZNubBgwcpW7asFLuXTiTh+4REh8dwftdl9Lo3glZRVocSVEzSztCx18RExdC9SS+cnJxo3rw5t2/fpkePHjx69IibN28yZ84cmjRpgqWlpcH+crmc3w5PwDyFWV9KyOUybHLZsOXOap48eUKVKlXo27cv+fLl49ChQ+ka630YNmwYixcvNkpw0zvjA6hSpQpOTk7s3bs3gxZ+Hbx48YL69eszcOBAxowZ81GvXb9+fR49esTz58/R6XR4e3ujT+FFJGuDejgMH0zIlm3oYuMQej3Bm7Yhk8vI0T5pJha5TIap4uM4tu/YsYNLly4xf/78TB1XcmrJGJLwfUIu7buGXPl+PwJtvA7TkCycPXuWp0+fsmrVKrp06YKtra3RY+R3zsvck1OxymqZanjDa5SmSnI65mDBxZlkt8tK3rx5OXLkCPfu3SNfvny0bduW4sWLc+nSpfe5NaNo1KgRcXFxacbcxcbGolKpyJo1a7qvMWrUqI8WW/k58lr0+vfvz9ixYz/KNXU6HY8ePWLv3r3MnTuXrFmzUr16dbJkyUKDBg3QRCTdm4vxuEPkpSsAmBcuhExpgjY4mPAjx9HHRGPXxxXZO3tqMpkMu4/g/u/n58ewYcPYvHlzpoYbSLF7GUcSvk9IqH8Y6rj3D0uwlFlRpEiR99rcLl6lCMtvzqVet1qYmptgZpncS9PC2hxzKzNaDWjM8ltzcSiYdPZUrFgxLl68iJubG+bm5tSuXZvKlStz9+6H856Ty+VGhTa8ztqSkc+oXbt2BAQEcPXq1Yya+cXi7+9PgwYN6NevH+PGjcv08bVaLV5eXuzevZuZM2fSvXt3ypUrh7W1NU2aNGH16tWEh4fTqlUr7O3tCQoKwtfXl59btsZS+SaLkMzMlKgLl9CrVKj9A9CrVCiyZiX6ujt2vb9Hpkw+s1PK5FTN45Tp9/Q2Op2O77//nlGjRhmVei09SLF7GUdKUv0J2fDrdjZN35XsuL/wIZRAysiqp3rsNXmLO7L2/oJMsys6PIZj6/7l/O6rRL2KQS6XkdXOhsbf16Vel+8wszAuZu/MmTP88MMPPH36lLp167J+/Xry5cuXaXa+JiIiggIFCuDp6Zmi08CVK1f48ccfMyxe8+fP5+rVq2zbtu19TP2iCAgIoH79+vTq1YtffvnlvcbSaDQ8fvwYT09P7t27x7179/D09OTx48c4Ojri7OxMqVKlEv8tUaJEkgd6XFwc9vb2PH78GFtbWyJVKqqtXo5K92bJ89W+g0Rfc0dmoiR76xboo2N4te8gMrM3L3E527fFukolzBQKBlSqwqjqNd/rvtLijz/+4PDhw/z777+J++rpRS8Et4MCCY6JQa3TYWNmhrOtHfWqVWPp0qXUrl07k63++pGE7xOy+69DrP55UxLnFki/8OUqlI0pB0ZTvHjxTHORzkz27t3L0KFDCQoKonXr1qxatYpcuXJl6jWGDBmCnZ0dv/76a4o2rFu3jn379mVo/MjISAoWLMjNmzc/iHh/bgQGBlKvXj1cXV2ZMGGC0f3UajWPHj1KFLbXIuft7Y2Tk1MSgXN2dqZEiRIp7j+/i4uLC02aNOGHH35Ar9fTauF87uu1BmdzaWGmUHK2dz/srKzT3ddY3N3dad68OdeuXcuQ80lYXBw7PO+w9pY7sRpNwmqFAJkM4jVaNA8fsWvCRCrYO0qhDOlEEr5PiOclL35uOiNJKAOkT/jkShmmRQSe8e68evWKypUrU61aNapWrUq1atU+SqUHYxBCsGHDBsaMGUNkZCSurq4sWLAAa+vMefB4enrSqFEjfH19MTVNvky7YsUK3N3d36vW3ujRo1EqlcyZM+d9TP3sCQwMpH79+vTo0YNJkyYZbKNSqXj48GEygXvy5An58+dPJnDFixd/79Rcr8sGrVixgt69exOn1yHr3oWX8XHo0vEYM1cqmVGvER2dS72XPSqtlkiVCmRgY2qG2VsCHBMTQ6VKlfj111/p2rVrusfe73Wf8SePJ4hcSh7FQmBhYkp5e3tWtmqHlYHfewnDSML3CRFC0KvocAKeJI0lSo/wmZqbsP7hImydcvLy5UuuXbvG1atXcXNzw83NDWtr6yRCWKlSpU+6J6DX61mwYAFTpkxBrVYzbNgwZs+ebVCs0kuDBg0YMGCAwQfNtGnT0Ol0TJ8+PcPj+/j4ULlyZXx8fIgIjMLvgT+xUXFYWJvjUCg3BUrlfR/zPwuCgoKoX78+3bp1Y/LkycTHx+Pl5ZVM4Hx8fChYsGAygStWrBjm5unzEDaWqKgocufOjaWlJaNHj2b8+PEEx8XSZdd2AqOj0ejTTpRurlTyU41a9KlQKUM2aHQ6TjzxZoW7G57BLzGRJyxfavQ6Kjk4MqBSFerlL8jQIUOIiYlh48b0F2redPsWv104a3QOUjOFgnxZs/GPS3esJfEzCkn4PjEHV5xgxdgNyWZ9xlKpSTl+P2r4rVwIwePHjxOF8OrVq9y5c4eiRYsmCmG1atVwdnbO8P5DRtFoNMyYMYO5c+cil8uZOHEi48ePfy87du/ezbx587hw4UKyc0OGDKFUqVLvlUhZq9HSsU5XTANsiA1WoTRRIoQemUyGTqvDvqAdXca1o27nGh89hdv78toztnfv3hQsWJCcOXNy7949nj17RuHChROF7bXIFS1aFDOzj5efNSwsjCFDhnDgwAF+/vnnJDPRSJWKmedOc+ChF3KZjDhtUocxuUyGmUKBQxYbJtauS/0ChTJkw6GHXkw8fQKdXk+MxrBTmpWJCeh0RP+zl1t796fbi/icrw+DDu1LV+JtSBC/CvaObO7QWVr2NAJJ+D4xcTHx9C35I6/8w9Dr0/ej0Mv0tJvRiOETjC8Fo1Kp8PDwSBRCNzc3/P39qVSpUqIYVq1aFScnp4/yBxQfH89PP/3EihUrsLS0ZM6cOfTv3z9D19ZqtRQsWJD9+/dToUKFJOc6dOhAjx496NixY4bsfP4ogJ8aTiPyVSTq2JQ9cS2szTExN+GPY5MpUqFghq71IYmNjeX+/ftJHEzu3bvH8+fPAShcuDAuLi6JAlekSJFMmY2/D//++y+9e/embdu2lCpVihMnThhMXB2lUrH7wT223PEgNDaWOI2aqNBQ2lWpRr+KlSmXO+PL/qtvXGfelYtGC5KpTM6MBo3oXKpMuq7T6O+1PAl/kwg+5s5dXu3eh9DqyN6yGVmqV008579wCeYFCpCjTUsALE1MWNe2A1UcP6yn6teAJHyfAQFPghhSZTyxEbFGi5+Q6ek4uTlTlvyCm5sbBQtm/CH76tUrrl+/ztWrVxPFUKlUJhHCKlWqYGNjk/ZgGSQqKorBgwezbds2cuXKxeLFi+nUqVO6x/ntt9948uQJq1evTnK8Zs2a/PHHHxlK5Ot7/zk/fjeR2Kg4hJE/H3MrM/44PhnnGsXTfb3MIDo62qDABQQEULRo0SQelPb29gwYMIAOHTowbdq0TH/hefwqlHW3bnAzwJ9otRozpZI8NjZ8X7Y89fIXRJGCQ1Z8fDwTJkxgx44drFmzhqZNmxIaGkqhQoUICAhI0ykmPj4eCwsLwsLCyPZWqrL0st/rPj+fOp7uWZi5UsmyFm2oW8C4v02PwAC6796ZOGPVqzX4TZuJw9BByJRKXsydT95fJ6GwsiT2vhdBy1eRtWH9ROGTAQ0LFWZlq3bpsvNbRBK+z4RAn5eMqT+VqNBo4qJTTqNkZmEKMhk565nzPO4pTZs2Zc+ePZw7dw4TE5MU+6UHIQQ+Pj5JZoU3b94kf/78icujVatWpUyZMpl2zdcEBwfTt29fDh8+TL58+Vi7di3169c3uv/Lly8pXrw43t7e5MiRI/F44cKFOXbsGEWKFEmld3IiX0XRz3kUEcERpPcvxdLGkpUe/yN3fuOTCaSXqKioRHF7W+BevnxJsWLFkuy/lSpVikKFCqF8ywkjODiYhg0b0rZtW6ZPn56ponfhmS9zL53n0atQtDod2nc+QCsTE8yUSn6oUJkfKlZG+ZYAenh40LNnT0qUKMHy5cvJmTNn4rlGjRoxZMgQowK3TUxMOHDgQIaLzKq0WiqtWkrsW0ubhmZhUdfcCTt4GJmJCbm6dMKiaMLvWQ4LC672G5SiuL/NsCMHOPr4UWIOUtULf4L/3ozTLz8B8GzyNHL/0Aez/Pl48ecC5ObmmOV1ShQ+AFOFgvN9+mNrKcX2pYZUiPYzwb6AHeu9FnJxjxvb5+zD78ELFEoFOp0uIURBllA/r+OoVjTv1xCrbJZ06tSJW7dukTVrVqZNm8bMmTMzxRaZTEbBggUpWLAgXbp0ARL25O7evZsohIsWLcLHx4fy5csncZ4pUKDAez08bW1tOXDgAL6+vri6utKwYUOcnZ3ZuHFjsuVLQ9jZ2dG6dWtWr1xN5Xw1uHvJi8jgSKyf2XF2w1Ws+mZJFnifGgeWHSM2MjZV0bsuzpCVnBSVJV3WUsWq2PbHHn5cOsDo66VEREQE9+/fTxS21/+GhIRQokSJRIEbOHAgpUqVomDBgmnul4aEhNCwYUNat26d6aK3/tYN5lw6n+osKUajIUajYaHbZc4982F16/aYyeXMmzePOXPm8Oeff/L9998ns+t17k5jhM/Gxobr169nWPgOPfJKUiDsdamjt2dhls4lCdt/kDzjRqOLjCJwxWryTpuMTCZDpdVy1teHBgXT3ld0e/E8aeLtFJJsx9y5i8LSErMC+RDvVGcx/S/xtjHX+5aRhO8zwsTUhHpdalKvS0187/nx9M4zYiJiMbM0wzZvTsrULpkkTm/Lli00atSI8uXLs3btWho2bJiu2VG6bDMxoUKFClSoUIFBgwYBCbFtr5dIt2/fzujRo9FqtVStWjVRCKtUqZJk5mUs+fPn5+zZs3h6euLq6pq4B7l582YKFy6cYr+QF6EU1pfi2MQrXLC6kzh7tsOJXXMPsPvPQxSvUoRuv7SnSrPUhVSn07F7wWHU8Snv6YWKQMIJISs5k53TaXWc+PscA+a6YmFlnKdjeHh4Mg9KT09PwsLCKFmyZKLA1atXj1KlSpE/f/4MOQSFhobSsGFDWrVqxcyZMzNV9LbdvZ2m6L1NvFbLzQB/vt+5lZBV6xA6HdeuXaNAgQIG27dv356JEyeiVqvT3H+0s7PD09MzvbeQyHJ3tySOLG+XOgKQm5uhfvkSZY4cKLJkQZElC0KtQR8djSJLFmI0Gla4uxklRLHvOMwYSrKtsMlC+OFj5OrmQqznvWRj6IX4qIm3v1Qk4ftMye+cl/zOqbvHW1hYsH//fmrVqkWbNm1wdXXl5s2bmR4cnhI2NjY0aNCABg0S6vEJIXjx4kXirHD27Nm4u7vj4OCQZL+wfPnyRnsElipVCnd3dy5fvkzv3r0pWrQojRo1YuPGjckSTt+77MWEFr+hilMjF4pkS8ZatQ7Qcef8fR7deEKjnnUYtrhfisLhdvgmGlXqKeW88SQHdimel8ng9NaLtPghaaXvV69eGRS4qKgoSpYsmbg02ahRI0qVKkW+fPkyLTnBa9Fr3rw5s2bNylTR8w0PZ/rZ08T/l1HF0LJg5IVLhB8/BXIZtt27YFGsKCqdjhv+L6jeqjmbRo5JVcwdHBxwdnbm1KlTNG/ePFV78ufPn6yWn7GExMby7J1ajIZmYSa2tmhfhSV8Hx6B3MIc+VshQ+7+Lzjx77+Eh4YSEhJCcHCwwS+zkUORvxPr+G6S7Zibt1DmzIFZvrwGhU+OLDHEQiJlJOH7wsmZMydHjx6lZs2aVKxYkb59+7Jv3z5iImI5tv40+xYf5VVgGFq1FlNzU/I5O+Eytg3fta2C0iRzf/wymQwnJyecnJwSvSd1Oh337t1L3C9cs2YNDx8+pHTp0kmWSIsUKZLqg71GjRp4eXlx5MgRBg4ciKOjIx06dGDNmjXY2Njgdd2b8Y1nEB9rXFhIfIyKExvPoY7XMHbtEIMP/9vn7hEXlfLb80vhjwmm2JAD/Tslo96+ztHNJ/HVPEwicLGxsUn23po1a4azszN58+bNkMAJIYiNikMVq8Iqq2WKaeVevXpFo0aNaNq0KbNnz850R5Z1HjfQiYTPwtCyoEXJ4rzafwinn8eiefWK4A2byfvrRGQKBTJTUx5bWJJijay3eL3cmZbwlShRgp07d2boXsLj4zCRy1G/VfA2pVJHWWpUw+/XWSAEtj27JUmIrddq+XX2bOxtbLC1tcXW1paiRYvy3XffJX5va2tLt+OH8ItMmnz7dZLt3P37IpPLiX/kTbz3U55NmoZelfC7Lre0IFuj/4pByyCXkZlwvmUk4fsKyJ8/PwcPHqRx48bkzJaTft8NJ8jjFTK5HNVbQhAXHY+X22P+128pigEKuk/sQKfRrT9o2IJCoaBMmTKUKVOGfv36AQlZLW7cuMHVq1c5cOAAkyZNIioqiipVqiSKYdWqVbGzSz6Tat68Oc+ePWPz5s2MHDmSnDlz0qtHb0L3a1IUvVciCH98KS2rmuS4KlbFuV2XKVmjGK0GNE7WLzwo5crrQgie4IkzlQgmINXP4O7Nu8QWDqZUqVK0atUKZ2fnTAsX8b3/nN1/HeLkpnPotTrkCjlajY4cDtnoPKYNTXrVwzpbwuzjteg1btyY33//PdN/7vFaDTs976LRJwifoWXBqEtXMbGzRZkjO8oc2ZEpFaifv8Asf77EMc4980kz1q5Dhw5Uq1aN5cuXpzo7rFChQprZeoQQREREEBAQQGBgIAEBAQQEBOAVEky8bQ5QJh3/3VlYvPdTYj3vkW/Wrwi1hoCFSzArkB+TXAnL3+bm5uzZuyfN9GhdS5dlkduVxCVibXgE0dfdyTNudGJatlxdOpGrS4K3c9iRYwiN9o3okZB4u5JjnlSvIyEJ31dD+fLlWbtiHX+4LMXX2x85KT8MXs9i/v51B49vPmX838M/ao5PKysrateunSS5bmBgYOKscMGCBVy7do3s2bMnmRVWqFAh0YW9R48edO/encWLF7Pgp+XkUxdDYeDX+YY4Rzgh2GI4eXV8jIrNM3bRsn+jZEJgYp6yx2oQz7HAChtZDoJF6sJX/bvq/LZ6Yqpt0kvIi1Cmd/4Tbw9fdBotOu1/M05Nwuwk5Pkr1k3cyppfNtN6UBM6T2hNk6ZNaNCgAX/88ccHedn59+kT5G+Na2hZUJkrZ5LZkMzUFO2rsEThi9Fo2OhxK03hK1iwIE5OTpw/f5569eoZbKPX6ylatChxcXEcPnyYoKCgRFF7+yswMBCFQoGDg0Oyr3dFDwzMwnx8MC9cCIWlJViCqYMDKj+/ROFT63RkNUt7j7dLqTIsvHo58fvY23fQRUbhN2N24rHXSbYNYaZQ4FquQhLvWAnDSML3laCKU3Fw+hmsZNboMc7vPj5GxcW911jy41qGL/rhA1uYOvb29rRp04Y2bRKKher1eh4+fJi4X7hlyxbu3btHiRIlkuwXDhkyhKvz7hPkG2xw3IqyOonp3lIiJiKWW6fvUqJGEW7duoWbmxvnzp3D+9QLcpIHuYHqXWEEE04I58QBdCS8oZsIEwrISiRpJxDcfujB4sWLqVmzJmXLln3vLDl+Xi8YWWsyMRExbwTPAK9nwAdXnGDbmp3U7VOXuXPnfrAZfkB0dJrLguYF8xO64x+0YeFoIyLQhoQidElTjT2Pinx36CSo1WqCgoKoWrUq//vf/3jw4IFBQQsODk6MPf3tt98oXLgwDg4OFClShNq1ayeKm729vcGcsUIIzm5Yw7PINzN/Q7Mw09y5eXXNHX1cHHq1GpXvM7K3fONFWto2d5I8nimRw8KSevkLctz7EUImw6ZOLWzqpBx3mr1502THupcpm+Z1JCTh+2rYPmcfzx/6o9clFT2ViOc8BzHhjfdbTZqjlCXMZlSxKo6tO0P9rrUoXTPpQ/tTIpfLKVGiBCVKlKBXr15AQkDyzZs3cXNz48SJE8yaNYu4QDUlVVWRkfGHeVx0HINbjuK65gzm5uZoNBpMTU0pmb8UCi85wkAKyJKyipSkIgDewhM9+mSiBwlxl3W6VObWrVssWbIEf39/qlatSs2aNalZs2ZicVVjCQsKZ0y9qUS9ijaq6jyAKk6NqdKSnC8/bFWJeK0G3Tv5Mt9dFpTJ5WRr1hj/vxZhUbwYJva5UbwjOhHR0ezYsSPJjOxtQYuIiMDW1pZs2bLx5MkTHBwccHR0pGLFiknEzN7eHlNTU8zNzRk0aBA9e/ZM1/3IZDIGVKrCb+fPEvtfUHlKszCLYkV5PmsOyGTY1K+TuLxrZWLCwMrG1eF7+fIlnouWIm9YF725mZGvrwmYK5VMqVP/g1ab+JqQAti/AnRaHZ3tfyDqVXSycyoRz3VOU1OWshOATCajRpvKTNuT+YVGPzS7Fu1n7fitaOJTdp1PraTTa2SWghYza1G+fHlKlSqVWMF+ZK1JeF7yStWG18L3bhwfgGPh3Kx/uChxlhUaGsqlS5e4ePEiFy9e5ObNmxQrVixRCGvWrEnevCl78/7ZfxknNpxFp02uxgHiGY+5gxw5JahITllSr1dzKzNmHZpA2TrOqd5PWsTHx+Pt7c3jx495/Pgxjx49Svi/tSXU/g75W0kNwg4dRfXsWcKyoFKJXqVCFxWFSa5cCCF4NulX8owZiTJH9sQ+yrBwyt65n2zZ0d7eHgcHB3LlypU4ay5ZsiTr16+nWrVqKdrr4OBA9+7d+fPPP9N9rzFqNVVWL0t31pbX2JiZce2HwZikMcu/cuUKLi4u9OrVizbf98Rl13YU1lYpuEwlxVyp5MeqNRhYuWrajSUAacb3VXDloDtaTcp/mEpSj3USQnDt2C3CXkaQ3S59SXUzC71eT2xsLDExMYn/vv56+/t3z/lfDU1WzzAjmMhMsLa2JiQkhFu3bpEtWzayZs1K04H18PbwSTWJeGGZ4fI2ZpZmuPzUNsnSYs6cOWndujWtW7cGEnKn3rhxg4sXL7J9+3ZGjBiBubl5EiEsU6YMSqWS2Kg4Tm+5YFD0NELNEzypRiPiiOYubtQk6cuOKlbFzj8PGCV8sbGxPHny5I2ovSVwL1++JH/+/OTNm5fcuXOTNWtWypQpQx5zMy4pFLy2ztCyoC4qCv8/F+I06WfivB5iYmeXVPRkMlxq12Xm1Blp2ghvvDvTEr4HDx4YNd67WJmaMqFWXWZfOEtcBlKWzarfOFXRE0KwcuVKJk+ezOrVq2natCkNGjSgc+PGRBYqwlnfpwCo3lkORggUQmCfNRuTatejaZGi6b63bxlJ+L4Cjqw5larbvRY1l8Ux1KgoTGmcZMkdB+RyGRf3uNFqYHLvRkgQpri4uHSJUnrOqVQqLCwssLS0xMrKKvErte8dHBxQFrQk3P0RWlXaJWlSQ8gFly9fJjw8nIiICCIiIhL+Hx6BfWwhcuFg0HkmJeQmcvKWdqBkw8KEhYVhY2NjcG/PzMyMGjVqUKNGDcaOHYsQgkePHiXOCJcsWcKLFy+oVq0ahcxKoBeG5wAq4nAgP6YyMxRCSRwxCCGSiK4Q4H7cg1eBYeSwz05MTAze3t5JxM3Ly4uHDx8SFhaGra0tOXLkwNLSEoVCgVarxcbGBq1Wy9OnTwkPDyckJCRxRuZoYY+VXM7rHbqUlgWz1q/D81l/oLCxwa530uVHhVxB3woVjf6cO3bsSJcuXVL1Ui1cuDD37iWPeTOWnmXLExgdxbpbN4wWP3OlktHVa9KyWMq5WuPi4hg6dChubm5cuHCBokWL0rdvXxwcHPh9yhTkcjkhsbFsu+vBds+7hMXHodXrsVSaUCJrNk7Nmcvdy1c/apWMrwVpqfMrYHClcTy++dTgObVQcZerlKYq8cRxnTPUpiUmsuSzQHkRNSrHCIOCFR8fj7m5eRLhSU2U0nvOwsIiQ04Xt8/dY1Kr2anmNzVmqdM6vzmDV3xP7dq1kxVM1ag1TOv8P26evIs6Tp2mTUKmJ5IwoosEEhMfQ0REBFFRUVhZWSXOJLNmzZr4/7SO6fV67t+/z6ZR+4j1TztO0V/44sdjqskaJj+pELyyfcGj6IRYQmtra0xMTBBCEB8fj1qtxtbWljx58hj0cnz9ZWdnZzBP6+bbt/jtwrlkpYGMpVxue/Z06WF0eyFEYkWOsmUNO3ZMnTqVxYsXExoamiGbXrP5jge/nT8DkKIAWv73mfzWoDFtipdMcSwfHx86duxI0aJFWb16NdbW1vz5559s2rSJCxcuGFUzs06dOowePZp27dql91a+eaQZ31eANpWlPlOZGRWpk/B/zFEKJbFEk5XkacQqVahE40G1DQqWhYXFRw15MJYytUtildUyVeFLC1MLEwrUdmDatGncvn2bmjVr0qxZM5o2bUqJEiUwMTVh+p7xbP9jL1tm7yY2Jha5SD57s7A2RwBtBjfhhfkTDh0+yPWb17G0tESv1xMVFZU4o0w2s4yIICQkBG9vb4PnwsPDqaiqhyWpOy/4Ci8ecYey1DB4XugEWS2y0alZJ4oWLYqjo2MSQcuRI8d7/ZzblXBmgdtl4rWadDlnQMIsaex36aueIZPJEpc7UxK+KlWqEBmZuqeoMfQoU472JZz5ac0qTsVFI7O2QvlWIdr8WbMxqFJVWhQtlqoX54kTJ/j+++8ZN24co0aNQiaTcfjwYf7880+uXLlidKFoV1dX/v77b0n4MoA04/sKGFV3CnfP3zd47pV4iRYNdrKEoNYzYh9VqI+VLGmJIaWpgr6zetB5TOsPbm9m88/8A6ybvD1JsH56yJY7K9tfrEQulxMeHs6pU6c4duwYR48eBUgUwYYNGzJi+AhsyYPqIbx4HEBUeDQWVuY4FLKn06hW1HWpgZmFGUIIevfuTVRUFDt37syUQr/fFx5K4NOXabYLE8F4cImaNE82s1coFfSe0ZWu49u9tz0p4f0qlPY7thCjVhstfuZKJeNr1qFXubQTkb/LxYsXGTx4MLdv3zZ4PjAwEAcHB6KiogyGLaSXZs2a0adPH+q3akl4fDwyZGSzME+zIoIQgt9//51FixaxZcuWxPjDe/fuUa9ePfbu3ct3331ntB0RERHky5ePJ0+eJKleIZE2n98rvES6qdqsPKYWhh1Y9Oh4yn10QkeICECJCRYGZg1KEyVlan8+4QzpoWmfBiiUGftVFnI9odbPefbsGQDZsmWjY8eOrFy5El9fX44dO4azszOrVq3CycmJLVu3YOoErovas+vlGjS1ghmz/wdW3vofTXrVS0wVJpPJWLVqFWFhYYwblznesjY5U35ovxQveC6eAJBdZoscObEk9/JVmiqxyfFhXd4L58jJHpfu5LS0xEKZetkqE7kcmU5HuVcRGRI9SEhnFxwczKNHjwyez507NzKZjLt372Zo/LcJDQ3l8uXLtGrVCjsra4rlzEXRnDnTFL3IyEg6dOjAvn37cHNzSxS90NBQ2rRpw9y5c9MlegBZs2alefPmbN++PaO3880iCd9XQIv+jVIskJpL5kA2cnGRwzziDmWohlyW/MeeyyknJap+mZ5h1tmsmHXwF8ws01cp3MzClNrtatB8QEOqVKnC6tWrk8TGyWQySpYsyciRIzl69Ci//PILDRo0QK1W06dPH3Lnzo2XlxeHDh3C398/2fimpqb8888/HDp0iKVLl773fdbpVCPFFxwFCp7jjU5oiRYR6NAaXBZVxccTpHlBbGzse9uTGoVz5OS0az8m1K5LXpusWJqYYKZQIpfJMFUosDIxxdLEhJ5lyrOzTQfOLl3Ov//+m6FryeVy2rVrx+7duw2el8lkWFlZ4ebm9j63BMDevXtp3Lix0cuRkDCjq1q1Kvb29pw9exYnp4QK6RqNhs6dO9OhQ4fEWNX08nq5UyJ9SEudXwnTO/+PC3vcjK4Q/jbmVmYMXdiPZn0+TEmjj8XNf+/wc/MZ6DV6SCOg3dzKjBptqjBu/VCUJkru3r2Lq6srjo6OrFq1KiFd1VvodDqKFCnCjh07qFIlISDZz8+PFi1akC1bNjw9PXFyckpcFq1Vq1ait523tze1atVizZo1tGjRIsP3FxkaRVengSlWjHgkbhOAL3IUFKEM9rLk8YC2xbITnPcp165do2XLlnTt2pUmTZp8UM9AIQQ3Av25FxxMlEqFhYkJ9tbW1C9QEPP/ZoTHjx+nb9++3Lp1K0PVRU6ePMnEiRO5evWqwfMFCxakQYMGrFmz5r3upVmzZvTt2xcXFxej2u/atYvBgwczZ84c+vTpk+TckCFDePbsGfv27cvwUrhWq8XJyYmzZ89SvHjKHqQSSZFmfF8JvWd0SzEjf2oolHJyOGSnftf0LbN8lmTX4ml9hbrdv0NpqkDI33kJkIHCVE4U4fT9Xzd+2TQisUJF6dKluXLlChUrVqR8+fLs2LEjSdcjR45ga2ubKHoAefPmpVChQowZM4aXL1+yYsUKLC0tmThxIra2trRs2ZJFixah0+nYtWsXvXr1wsPDI8O35+vvQ7x1JCKFnbOisrLUkbWmlqyFQdEztzZn5PzBnDhxAi8vL2rWrMncuXNxdHSkX79+nDhxAm0GA7VTQyaTUckhD9+XLc+QKtXoU74izYsUSxQ9gCZNmtC9e3f69OljdEaat6lbty6PHz/Gz8/P4HknJ6cUl0KN5fUyZ8uWLdNsq9VqGTduHD/99BNHjx5NJnpLly7l7NmzbNmy5b32f5VKJd27d2fjxo0ZHuNbRBK+r4R8JfIwbe84zCyNFz+liQKbnFn48/SvGRLNz4nXy4+/zZ/JpE2jse1oRtmORanfrRaVmpSjWM0C6BxjWer2B15Zr7PjzKZk4ROmpqZMnz6dgwcPMnXqVLp168arV68AWLJkCUOHDk12XRMTEzQaDUqlkho1avDrr79y5coVfHx86NWrF7du3aJ+/fr07NmT8uXL06hRo3QHU0dFRTFmzBgaNmxIyx8bYmWT/rIzenRky5eFyk3LAQn7XkOGDOHcuXPcunWLUqVKMWnSJPLkyZN4XK83Jm9I5jFz5kyCgoJYuHBhuvuamJjQunVr9uzZY/B80aJFUxRFY9m7dy9NmjRJc5kzODiYJk2acOvWLa5fv06lSkmTSv/7779Mnz6d/fv3J+YSfR9cXV3ZuHHjR/95fclIwvcVUbFhGeacmIx1NissrFPPBm9hbU6eYo4svzmXXHm+fI+w2bNnkydPHr7//nu0Wi2Hjx1i1P+GMGHzj/x+dBKTd47hdtxVCpbJz9ixY/nnn38SRe1dqlSpwo0bN7C3t6ds2bKsXbuW69ev06VLl2RtTU1NUauTx/blyJEDFxcX1qxZw/Pnzzlw4ADNmjUjW7ZslCpVipo1azJr1izc3d1TfGAJIdi5cyfOzs6EhYXh6enJmEmj+P3YZMyszFKc+SWz0cIEp+KOnAs/zNy5c5PNqPLmzcvo0aO5evUqly9fJm/evAwfPpx8+fIxevRo3NzcMjQLSy+mpqZs27aNmTNncvPmzXT379ixY4r7fGXLliUkJOS97Nu5cyedO3dOtY2bmxuVK1emRo0aHDlyJJm35ePHj+nWrRtbt26lcOHC72XPa8qVK0fWrFk5d+5cpoz3TSAkvjpUcSpxfMMZ0bfUSNHSqrtom81VtMn6vWibzVU0N+8mxjedIdxP3hZ6vf5Tm5op3Lp1S+TKlUs8f/5cCCHE6dOnRaVKlZK00ev1ImfOnCIwMFBER0cLMzMzMWLEiDTHPn36tLCxsRFly5YVkZGRyc67urqKdevWGW2rXq8XvXr1ElWrVhXDhw8XxYsXF7a2tqJ79+5iw4YNIiAgQAghhJeXl2jcuLEoU6aMOH/+fJIx1Gq1+K5sLdEqR3fROktP0UjWyeBXM9OuooVFN/Frh7kiPjZePH/+XJQrV04MGjRIaDSaNG319PQUU6ZMEcWKFRMFCxYUP//8s7h169YH/73ZsmWLKFasmIiKikpXv7i4OJE1a1YRFBSU7NyFCxeETCYTOp0uQzaFhIQIGxsbER0dnWKblStXCltbW7Fnzx6D58PDw0WJEiXE8uXLM2RDasydO1f06dMn08f9WpGE7yvHx/OZcDtyQ5zbdVm4n/AQwc9DPrVJmYparRbly5cXa9euTTw2YsQIMWPGjGRt69SpI06ePCmEEGLAgAHC3Nw8zYdrTEyMyJEjh+jcubMoWLCgOHv2bJLz/fr1EytXrky3zQ0bNhTDhw8XQgjh4+MjVqxYITp06CBsbGxE7ty5hYWFhRgyZIjBB+348eNF8+bNhVarFe4nb4vxTWeI5uZdRWub70WbrN+LhooOooVVN7F01Drh7x2YpG9ERIRo0qSJaNmypdHCotfrxc2bN8X48eNF/vz5RYkSJcSvv/4q7t+/n677Tg+9e/cWvXv3Tnc/FxcXgz+PV69eCZlMJp49e5Yhe1avXi06depk8FxcXJzo16+fcHZ2Fg8ePDDYRqvVimbNmomhQ4dm6Ppp8eLFC5EtWzYRExOTKePp9Xrh/SpUXPF7Js75PBW3AvxFjFqdKWN/DkjCJ/FFM2PGDNGsWbPEWYherxf58uUTd+/eTdZ2yJAh4q+//hJCJDwoTExMxMyZM1Mdf82aNaJly5ZCCCH2798vHB0dxejRo0VcXJwQQojBgweLxYsXp9vusLAw4ezsLBYsWJB47ODBg6JgwYKiQYMGYsSIEaJKlSrCxsZGtG7dWixevFg8fvxYHDlyROTJk0e8fPkyyXiRr6KEzz0/4XX9sejWrodYtWJVitdWq9Wib9++omLFiokzTEO8io0V5319xKGHXuKk92NxKzBAaHU6cfnyZfHjjz8KBwcHUa5cOTF79mzx5MmTdH8GqREVFSWKFy8uNm/enK5+27dvF82aNTN4TqFQiP3792fInqZNm4rt27cnO+7r6ysqV64sOnXqZHBF4DWjR48WDRs2FOoPKB5NmzZN9+f1LrFqtdh+97ZosGGNKLnkL1F22UJRdtlCUWbZQlFyyV/il5PHxKPQL//lWRI+iS+W27dvi1y5ciV5i79x44YoUqSIweW4JUuWiP79+yd+36JFC2FjYyPi4+MNjq/X60XFihXF4cOHE48FBweLzp07C2dnZ3H9+nUxYsQIMX/+/AzZ//TpU+Ho6ChWrVol2rVrJ4oWLSqOHz+epE1wcLDYsmWL6NWrl7C1tRUKhUK0bdtW7N+/P8UZ2+zZs8XYsWNTvbZerxfTp08XBQoUEPfu3Uty/GaAvxh6aL8osXh+4kOv7LKFovTSBaLa6mVilfs1ER4XJ7RarThz5owYNGiQyJUrl6hWrZqYP39+4pLz+3Lz5k2RK1cu8fjxY6P7REZGiixZsoiwsLBk57Jnzy6mTJmSbjtSWuY8efKksLe3F3Pnzk11+Xft2rWiSJEiIjQ0NN3XTg+bN28WTZs2zXD/00+fiNJLF4hSSxeIggv+Z/CryMI/Rcklf4mBB/eKeCOWyz9XJOcWiS8SrVZLnz59mD17dpL6dXv27KFdu3YGE16XLl06SfaOGTNmoFKpWLduncFruLm5ER4eTtOmbypd58qVi+3btzNp0iRatGjB9evXiY/PWJ5QR0dH2rdvz4ABA7C3t+fOnTs0bpy0OkauXLno1q0ba9asoXTp0vTv35/vvvuOv/76CwcHB+rXr8/vv//OrVu3Ep1knJ2d06xGIJPJmDx5MtOmTaNevXqcPXuWGLUa17276LF7J0e9H6HS6YhSq4lWq4lSq4nRaHgZE8O8KxepsXYFR7wfUbduXZYtW4a/vz/Tpk3Dw8ODMmXKUK9ePZYtW0ZwcHCGPhuA8uXLM3nyZLp162bQgcgQWbJkoV69ehw8eDDZudy5c+Pp6ZluO9715hRCMGfOHHr27MnmzZsZO3ZsignWL168yPjx4zlw4AA5ciTPj5uZtGvXjqtXrxpMppAWB7weMOTwfmI0GmI1KScY1wlBvFbLOV8fXHZtIz6Dycg/NVIAu8QXyezZszl9+jTHjh1L8tApW7Ysy5cvN5j+KTQ0lEKFChEeHp7Yp3z58gQGBvL8+XOU7yQWdnV1pWzZsowdO9agDf7+/tSuXZv4+HhOnDiBs7PxBV5Pnz7N0KFDKVSoEC1btmTWrFmJHpWGmDFjBv/++y8nT55MjPuKjo7mzJkziXlFo6KiaNKkCeXKlWPhwoX4+voaZcupU6fo5upKoQnjiEAkr/2WAuZKJRNr16NHmXJJjqtUKo4ePcr27ds5fPgw1apVo2vXrrRv355s2bIZNfZrhBC0adOGkiVLMmfOHKP6bNiwgX379iXz8GzevDlBQUHcuHEjXTY0bdqUfv364eLiQlRUFH369MHPz49du3alWjTY19eX6tWrs27dOpo1a5aua2aUvn374uzsnOLvrCGu+T+n195/0l1s10yh5Lu8eVndun2GKqt8SiThk/ji8PT0pF69eri7u5MvX77E497e3tSsWZMXL16kGBTs4OCAm5tb4gNr37599OzZkxUrVtC9e/fEdsHBwRQrVgxvb+9U39SnTJnCjRs3uHr1Kr/88gsjR45MtbpBYGAgY8eO5fz58yxcuJA2bdogk8n4888/2bBhAxcuXEgW23Xu3Dm6dOmCu7s7jo6OKY795MmTRBHcv38/5cuXp0WLFjRt2pQaNWoYLCMECeLSbuM6bocEJxaMNRZzpZIVLdtSO38Bg+djYmI4dOgQ27Zt49SpU9SrV4+uXbvSunVroxNGh4SEUKFChcRCrWnx6tUrChQoQEBAQJKYu1GjRrF161YCAwONui68eVny9/fHz8+P9u3bU6dOHRYuXJhqtpvo6Ghq1qxJ7969GTVqlNHXe1/OnDnD8OHDuX37ttFi1GrL39wLeTMzj/N6RJTbNey+T/h7UAe9JHj9RrSRkWRtUI9sDd9keLJQmrC5Q2fK2zskG/dzRlrqlPiieL3EOXPmzCSiBwlLUm3atEk1E0bp0qWTLHe1atWKLFmyMHny5CTxdGvWrKF9+/ZpLk+ZmZlRrlw5rly5wp49e6hfvz5PnyavjajValm0aBFlypQhb9683Lt3j7Zt31RnHz16NDVr1sTFxSVJ9pSQkBB69OjB2rVrUxU9gEKFCjF48GD27dtH2bJlGTJkCEIIRo0aha2tLe3bt2f58uXJ7HMP8Mc7Otqg6EVeuMSzKTN49utM4h4mz3wSr9Uy/dzpFG2ysrLCxcWF3bt38+zZMzp27MimTZvIkydP4vG4uLhU7ytXrlz8/fff9OnTxyjRypEjB9WqVUusrvGa8uXLExYWlmb/t3m9zHns2DFq167N2LFjWbFiRaqip9frcXV1pXLlyowcOTJd13tf6tSpQ2RkpNEZgh6EBPMk/M1nErBkBUEr14Duzd9C6PZdZG/bCqfxY4k4cQrNW/GvKp2WVTeuZ94NfCQk4ZP4ovjzzz/JkiULAwYMSHZu7969tG/fPtX+pUqVSrLPp1Ao+OWXXwgNDeXQoUNAQl7O5cuXG8zU8i4mJiao1WoKFy7MmTNnaN26NVWrVk2S8PrKlStUrVqVPXv2cO7cOWbPnp0s+4dMJmPRokXIZDKGDRuGSHA8o3fv3nTt2pXmzZunacvbODs7Y2FhwW+//Ya7uzteXl507NiRixcvUr16dYoXL86IESM4dOgQy9wuGywcq42I4NX+QziOHIZtz24Eb9yKMLAM6h8Vye2gtAUpa9asuLq6cujQIZ48eULjxo1ZsmQJjo6OuLq6cvjw4RT38urXr0+/fv3o1auXURlKDAWzV6xYEY1GQ0xMTJr9X7N9+3bUajWjR4/myJEj9OvXL80+U6dOJTg4mKVLl370JUC5XM73339vdOLqtTfd0bwlcg5DB5LTpWPi99qwcHSxsViWKI7CJgu5B/VHbv4mOYZeCE499eZV3IdNep7ZSEudEl8M9+/fp06dOly7do0CBQokORcUFETx4sUJCgpK9W189erVXLhwgfXr1ycei46OxsHBgaJFi+Lu7s7BgweZNWsWV65cSdOm+fPn4+vry19//ZV4zNPTE1dXV3LmzImdnR3//vsv//vf/+jWrVuaD8LIyEhq166Nq6srMpmM7du3c/78eUxN01d5YsaMGcTFxfHbb78lO6fX67l16xbHjh3j8JnTPG/a0OBsL+bOXcKPnSTP2JEA+E2bhV3v7zHLn3SmLZfJaF6kGIuat0qXja8JCAhg165dbNu2DS8vL9q3b0/Xrl2pV69ektm7Vqulbt26tGvXjp9++inNMZ2dnQkMDMTMzIyn4WGsvnaVv8+dIZejI2ampuS0sMSlVBk6lHAmi4HfmYcPH+Ls7Ezt2rXZuXOnUcmzt27dyi+//IKbmxt2dnbp/zAyAS8vL+rWrWtw3/pdqq9Zzst3XgSirl4j7r4Xdr17EvvAi4iTCVUz1AGByZY6AaxNTZnfpAUNC2VOJpqPgVSBXeKLQKfT0adPH6ZNm5ZM9AAOHDhA06ZN06wyUKpUKVasWJHkmLW1NYMGDWL16tWcPXuWJUuWMGTIEKPsMjU1RfOOF1zJkiUZNGgQo0aNQq/Xs2TJkiT7h6lhY2PDwYMHqVSpEiqVilu3bqVb9CBhxpdS4mK5XE7FihWpWLEiVbu6MOroIaINefLpdMje2q+UmZqifRWWTPj0QuD2IuN5MB0cHBg+fDjDhw/n2bNn7Nixg/Hjx/P8+XM6d+5M165dqVGjBkqlki1btlClShXq1q1L1apVUx2zVKlSrDl0kH+1KjyDX6ITAhNbWyI0GvjPQ3XOxXP8fuEcrYoVY0KtemS3sADg+vXrNG3alCJFinDixIk0BQTg2rVrjBgxgpMnT34y0QMoXrw4BQoU4Pjx42lWA4lRp+6VqY+OQeXji+OoEcgtLHg+ew5W5cti8lYqNr0QRKgy5tn8qZCET+KLYP78+VhYWDBo0CCD5/fu3UvPnj3THKdUqVLcv38fvV6fxAnlxx9/ZOnSpfz88888efKEvXv3GmXX66XO13h4eDBkyBB0Oh3nz59Hq9Xi6urKsWPHWLJkiVGVsm1sbDA1NSU+Pp6XL19SsGBBo2x5G2NCGgCiVCpSWjg0dcqDOiAQbVg42ogItCGhBpc6AWJScYFPD/ny5WPs2LGMHTuWR48esX37dgYOHEhkZCQuLi507dqVpUuX0q1bN27evJlqkueyHdsz79kT9Kk4G8X9t5+63+sBF/2esb1jV0788w/jx48nb968TJw40SjR8/f3p3379qxatYpy5cql2f5D87pOX7NmzQgODiYgICDZl7+/P7HfVYHUXqzkckwdHTDNk7C/bOpgj9rvRRLhkwHKVD7jzxFJ+CQ+e7y8vPj9999xc3Mz6DEZFRXFuXPn2Lx5c5pj2djYkCNHDnx8fChUqFDicScnJ1q1asW+ffvo0qUL5uapJ/l+zevqDJGRkUydOpUtW7Ywc+ZM+vXrl2jrjRs3mDBhAmXLlmXVqlWpvoULIRgwYABt2rShefPmtG/fnkuXLhmc5aZGkSJF8PPzIz4+PtV7UcrlKVYuNMmVi2zNGuP/1yIsihfDxD43ihQ8MdXx8cycOZP8+fNToEABChQogKOj43uV3ClatCiTJk1i0qRJ3L17l+3bt9OtWzeEEGTNmpVu3bpx8OBBg8vH5319OG2iwNiCBRq9npcxMTRZvQyxaRv79++nWbNmRtVPjIuLo127dgwZMoR27dql8y4zhlarJSgoKImIvS1qfn5+eHh48M8//5AtWzYcHBxwcHDA0dERBwcHihcvTr169XgREkiwWpXidZQ5sqNXvXmxEzo9vPMzlclk5LBIf8WQT4kkfBKfNTqdjr59+zJ16tQkQvU2R48e5bvvviNr1qxGjfk6kP3d8YYPH87OnTsJCAgw2j4TExMeP36Ms7MzzZo1w9PTM9lekIWFBfPnz6dt27b06dOHxo0bJzrpvMuqVat48OABV69exdzcnKdPn9KyZUsuXryYrhg4ExMTChUqxMOHDylbtmyK7XJZWiFLQfr0KhVW5cqQrWF9hBA8m/QrJna2BttaK5TExoZz9OhRfHx88PHxISQkBCcnpyRiWKBAgcTv8+TJY9RsChJ+ZqVLl2b69OncuHGDjRs3smTJEpycnBg8eDBdunShaNGiAMRqNAw5vB+VPmF2Gn39Bq8OHEKmUJCrSycsihczeEwvBCqFgnpTJnHv3j2jShAJIejXrx9FihThl19+MepeUkOlUhmcnb0rbq9evcLW1jZR0F5/lS9fnubNm+Po6MjUqVNp27atwVWSkJAQ9uzZg/b2HUThgshSCHUxy+uEPjaW+Kc+KGyyoHkZjFk+p2Ttqjjmee97/5hIwifxWbNw4UIUCkWqHpbGeHO+zeuQhjZt2iQ57uXlRbZs2XBzc+PevXtpBqR7eXnxxx9/4Ofnx+HDhw0Gzb9NvXr18PDwYPTo0ZQrV47169dTp06dxPN37txh4sSJnD9/PnGWNmLECLy9venUqRNHjhxJMRbPECVLluT+/fupCl9lxzwo5IaFTxcVhf+fC3Ga9DNxXg8xsbNDmSN7snZKoG+1GgyrViPJcZVKxbNnz/D19U0Uw+PHj+Pj44Ovry8vX77E0dExiRi+/eXk5JRMGGUyGZUqVaJSpUr07duXunXr4uXlRe3atcmTJw9du3bFomplXrvs6WJjCTt8lDw/jUYTEkLw35txHDsy2bG8UyYkdJDLueT/HN9jpxj0vWuan/Hs2bN5/PgxZ8+eTdVxKSYmJkURe/srKioKe3v7JGLm6OhIjRo1khyzs7NLczY9cOBA5s2blyh8oaGh7Nmzh507d3L16lWaNWvGiI4dmf3yBeoUlrBlCgW2Pbrxcv0mEHpytGmJ8q0XTFOFgu6ly2KWzvjPT43k1Snx2fLo0SNq1KjBlStXKFKkiME2arWa3Llzc+/ePRwcjAuiXb9+PcePHGfBn4swNTfBOpsVcoWcSpUq0bJlSzZs2ED9+vXZsGGDwf6xsbHMmjWLlStX0rp1a0JDQ9m3b1+67u3gwYMMHDiQrl27MmvWLHQ6HVWqVGH8+PH06tUrSVudTkf79u2xtbVl9erVRrvIT5kyBZlMxrRp01JtN+/yRVbduGYwY0v48ZNEnDmPwsYGu949MbXPnXwAnQ710pUM7duPAQMGGLWPCQk/Oz8/v0QhfC2Or7+CgoKwt7c3OFssUKAAefPmZc2aNaxYsYKLFy9y5coVtm7bxnFHOxT/CbTaP4AYjztkb94EvUaD708TyPPTKGJu301yrMC8PxIdeUzlCsJPnsJ787ZUZ3y7d+9m+PDhbNmyBZ1Ol+oMTaPRJFtufPfL0dGRHDlypJoAIT2o1WocHR356aefOH36NJcvX6Zp06a4uLjQokULLC0TlicHHNzL6adP0GVACswUCk5+35c8mVBQ92MiCZ/EZ4ler6du3bp06tSJH3/8McV2x48fZ+rUqVy+fDnNMWMiYzm56RybZu0kLCACc0sz9DqB0OspVqsQJx8e4qb3NYoVK0ZYWBgeHh7J9tYOHDjAiBEjqF69On/++Sc3b95kyZIlHD58ON33GBISwpAhQ7h79y5FihQhW7ZsKcZfRUdHU6dOHTp37mz0ktq2bdv4559/2LlzZ6rtXsZEU3f9aqNTlb2NUi6nUcHCDMiTjwULFrB3715cXFz48ccf05XCzRAajYbnz58nEcO3BTIgIABbW1vi4+OxtbWlU6dOWOXLy/r4aNQGHmtRbteJPHchMTwjpWMASpWKf5q1TnF25uPjw4sXL7CwsCBv3rwpCtnr/2fNmvWjxfSFhYWxb98+duzYwcmTJylatChTp06lZcuWBoU8MDqKllv+JiydOWctlEqGVanO4CrVMsv0j4YkfBKfJQsXLmTHjh2cO3cu1TfgIUOGUKBAAcaNG5diGyEEG37dzq7/HUAmlxEfY3gzX2Eix7GwA4Xb2bNpzwYaNGjAkiVLAPDx8eHHH3/Ey8uLJUuW0LBhQyBBeOfOncuJEycydJ9CCIYNG8aKFSsYN24c06ZNS3E509/fn+rVqzN37lyD1eDf5fbt23Tr1s2oxMyb73gw6/yZdOVrlAG5LC051L0Xuf6bPQQFBbFs2TKWL19O+fLlGTlyJE2aNMm0WczbaDQaXrx4wd27d+nduzdNmjQhJldO7ubLgzBN+hlG/HuGV/sPYde3F1ZlS6d47DVCo8Vy7d8Ghczc3Jxhw4YxY8YMevfunen3lRHCw8MTxe7ChQs0atQIFxcXcufOzQ8//MCjR49SFd6HoSF0/Wc7USqVUTM/C6WSHmXK80utOl9cnk6QhE/iM8Tb25tq1apx6dIlihUrlmI7vV6Pk5MTZ86cSbGdXq/nt+4LuHLQHVVsyt5rr5HJwMzKnJviHNGKCDw8PNi8eTPz5s1j9OjRjBkzJkms4OnTp5k2bRpnzpxJ931CwnLud999x5YtW5g3bx7BwcH8/fffKc6WPDw8aNSoEfv27UtzTzE+Pp7s2bMTGRlp1N7gsmtXWXTtilHip5TLyW5uzvZOXSmQLfm+X3x8PNu2bWP+/Pmo1Wp+/PFHXF1dE5fXMpsLFy7QqVMnFhzYz2/uV4kykAEm3vsJQavW4jRlIgpLixSPAciR8XjE6GRjqFQqGjVqRN26dZk5c+YHuRdjiYiIYP/+/YkviA0aNMDFxSUxDR8kvFiVLFmStWvXpvn74h8VyehjR/AICkAvBBoDLrFWJiaYKBSM/64OXUqX+SD39TH4soIvJL569Ho9/fr1Y8KECamKHiQEDGfPnj3VdstGbzBa9ACEgPjoeEppqpHbxpGKFSty5coVrl+/zoQJE5IFyJuamhpdMuddVCoVXbp0Ydq0aTRu3JjDhw8zYMAA6taty7x58wym5ipXrhx///03HTt2xNvbO9Xxzc3NyZs3L48fPzbKnsFVqvFn42Y4WGfB0sTEoK+nmUKBqUJBvQIFOdjd1aDovb527969uXXrFsuWLePIkSPkz5+fX375hefPnxtlT3qoVasWQ4cOZcE7FRxiPO4QeSkhA4954ULIlCZEXbqc7Jj2nfJJ5ibJnTWEEAwePJhcuXIxffr0TL8HY4iMjGTTpk20adOGfPny8c8//9CtWzf8/PzYs2cP3bp1S+ItLJPJEmP60sIxiw3bOnXhWM/e9CxbnqxmZshlCT6/pgoFFewd+LNJc9x+GPxFix5IXp0SnxnLli1LnCGkxd69e1ONm/K9/5zDq06ijksuTAHCl8fcRYGCElQkhyxppg29Wo/V85y8sHzGhg0byJ7d8AP+dRxfRvjpp58SE0tDwkNqwIABNGrUiN69e7Nv3z7Wr1+fLIC9efPmTJkyhZYtW3Lp0qVUE2k7Oztz//59SpYsaZRNzYsWp1mRYlx98ZyV7te4EehPnEaDUi4nm7kFXUqVoVvpstim4eb/GplMRr169ahXrx6PHz9m0aJFlC1blmbNmjFy5MhUs6+klwkTJnCieXNiVaqEqTsgMzMl6tgJrCtVQBv6Cr1KhTJnDiJO/Jv02DshKCVzJk9P9tdff+Hu7s7Fixc/yNJtSkRFRXHgwAF27NjB6dOnqVu3Li4uLmzcuNGoEJ6ePXtSoUIF/vrrL6PiU/NlzcbkOvWZXCchjEUnxBcXoJ4W0lKnxGfD06dPqVKlChcuXKBEiRJpti9RogQbN26kSpUqBs/PH7iCY+v+RadNOnNSiXiucpLqNEJFPLe4QC1aJt+rkAsiS7+gdaeWTJo0yeA1bt26lTizSQ979+5l1KhR3Lx502B8nk6nY/78+fzxxx/89ttv/PDDD8nsGzt2LNeuXeP48eMppmr75ZdfsLKyStH+T0FERARr1qxh4cKFODo6MnLkSDp06GB0TF9qvHjxghozfsXEuQSvH2yv9h0k+po7MhMl2Vu3wLpiBYPHXiPTaFDtO0jP72rRt29fihUrxtGjR+nbty+XL18mf/78721nWkRHR3Pw4EF27NjBqVOnqF27Ni4uLrRp0ybdNQ0BGjRowJAhQ+jUqVPmG/sFIgmfxGeBXq+nUaNGNG/ePM0ExAAPHjygUaNG+Pn5Gdxcj4uOo3PuH1AZmO2FiWAec4cqsgYAnBH7+I6mmMqSvg0rTBQEmvrib+HN06dPDXrEeXp60rlzZ6PSg73G19eXqlWrsm/fPqpXr55q29cJr+3t7Vm9enWSkA29Xk+nTp2wtrZmw4YNBj+HjRs3cuTIEbZs2WK0fR8LrVbL/v37+euvv/Dx8WH48OH88MMPKc6ujWXxzh386fsEmanxMY9vY2Niwqa6jdiwbh0bN24kT548PHr0iN27d9OoUaP3si01oqOjOXToUKI3Zq1atejcuTNt27Z9789k/fr17N69m/3792eStV82X9f8VeKLZeXKlcTGxjJ6dHKHAkO8XuZMyaPs9rn7KEwMB/hakoU4YlGJOCLEK5SYYELyGZNOoyOn1p7ChQuzatUqg2Old6lTo9HQrVs3xowZk6boQUJu0StXrlC5cmXKly/P9u3bE8/J5XI2bdrEgwcPmDFjhsH+xubs/BQolUo6dOjAuXPn2LNnD7dv36ZQoUIMHToULy+vDI87rLMLObU6ZBkIz5Dr9QTt3sfhgwf5/fff8fDwICAggIIFC+Li4sKAAQO4cuUKmTVfiImJYefOnXTu3Jk8efKwfv16WrVqxdOnTzl06BC9e/d+b9GDhDJNZ8+e5eXLl5lg9ZePJHwSnxwfHx8mTZrE2rVrjc7tuGfPnlT39yJDohB6ww8nM5k5eSjIBQ5zjX8pTOkUBdRCaUFcXBx//vmnQScWQ9UZUmPKlClkzZqVsWPHGt3HxMSEadOmcfDgQX799Ve6du1KaGgoAJaWluzfv5+1a9eyadOmZH1LlCjBw4cP0WVABD4mlSpVYuPGjXh6epIjRw5q165Nq1atOHnyZIZE5uiQ4YjISITG+PAMoVbTvUw5Lq9aw5EjR6hZsybt27enW7dueHh4cPfuXQoWLMj3339P6dKlE71w00tsbCy7du3CxcUFR0dHVq9eTbNmzXjy5AlHjhyhT58+aRZATi9ZsmShdevWbNu2LVPH/VKRhE/ikyKEoH///owdO9bogOcXL17w+PFj6tatm+q4KT0uw0UIIQRQh9bUoiVP8CRWRBtsqzQxITw8nDx58hgs8/NudYbUOH78OBs3buTvv//OkHNElSpVuHHjBo6OjpQtWzYxaN7e3p5Dhw4xevRozp07l9j+pV8IW2fuoaqmEe1z9KZtNle65R3IgiEr8fN6ke7rfwwcHR2ZMWMGvr6+tGvXjpEjR1KmTBlWr16dZqX2t3nx9Cnhy9egDQjAPI2XKaHToRCCPP5BTGvQmAIFCnDq1ClMTU25fv06+fLlQ6/X4+joyC+//MLDhw9ZtmwZHh4eFC1alE6dOnH48OFUXy7i4uLYvXs3Xbt2xdHRkZUrV9KkSRO8vb05duwY/fr1MzrjTUYx1rvzW0ASPolPyurVqwkPD0/XDGj//v20aNEi1di0LDmskaeQgzKcULKRCxOZKeYyC6ywIYowg22tbCz58ccfsbKy4vfff0/2cDN2qTMwMJDevXuzceNGbG0NJ3o2BgsLC+bNm8fmzZsZOnQo/fv3JyoqilKlSrFlyxZcXFy4cOIyPzedQe9iI9j912FMdGbERcUTGxlHyItXHFnzL4Mq/MTw6r/w0D31kIhPhYWFBT/88AN37tzhr7/+Yu/evRQoUIDJkyenmUT8+fPntG7dmmV//cU057KIA4ep5pgHM4UCuU6HTIiE8kp6PTIBtnIF0Tt282ONmokz/5UrVxIcHMzly5fZvn07jRo1wsfHB0jwVK1Tpw4bNmzA19eXxo0bM23aNPLnz8+kSZN48uQJkCB2r0MMHBwcWLp0KQ0aNODRo0ccP36cH374wajitplFw4YNCQgIMCqhwdeOJHwSn4xnz54xYcIE1q1bly6PvrSWOQHK1C6JVm14mcuKLLziJVqhQSXiiOQVViTPNag0UVKrQzX69evHjRs3yJo1K7t27UrSxpilTp1OR8+ePenfvz/169dPta2xvE54LYSgXLlynD17lkaNGjGq31imNJvDjVN30Kg0aFTJbdNpdKjjNTxwe8zoulO5esg9U2z6EMhkMho1asTBgwc5d+4cr169wtnZme+//x539+R2R0ZG0rJlS4YNG0aXLl3o06cP5bPnxPLsRTqWLIVCqUTo9cgUCpDLETJ4JQOz9q1ZFPaSvQ/uc+rff5k6dSr79++nUqVKnD9/nmbNmlGlShVWrVqVZOk1a9asDBw4kKtXr3LkyBEiIiIoX748uXPnJleuXCxcuJC6devy8OFDTp48yYABA97rxed9UCgU9OjRI8UCxd8SklenxCdBCEGzZs2oU6cOEydONLpfeHg4+fLlIyAgIM2SMb+7LuL01gvodckDwb3ELYLwA2TkoygFZMWTtTE1N2H13fk4FMrN6NGj8fX1xdvbm5s3bybODGJiYrC1tSU2NjZFO2bNmsXx48c5depUprjsv8uhQ4cYMGAA7Zp0xG93GHFR6cu5aGZpyu/HJlO6ZtohJJ8DYWFhrF69mkWLFlGgQAFGjhxJ27Zt0ev1tGzZksKFC7N06dLEn5Hb0yd03bkVhbk5ae10misURD/wYmWbDjRr3DjJOU9PT3r16pWYLDxPnoRSPCqVimPHjrFz504OHjxI2bJlKVasGN7e3nh4eNClSxf69u1LpUqVPnl6r7t379KsWTN8fX3fq1bil44kfBKfhLVr17JkyRKuXLmSrlI7W7ZsYdu2bUa5ZT++9ZSRtSahis1YZpUytUsy72xChg4fHx8qVqxInjx5+OOPPxILlKrVaqysrFKc9Z0/f57OnTvj7u6e+KD8EISGhtKjyCC0ESKxvt4rEYQ/vpSWJQ0Svy7OkJWcFJW9yb5hkysLO/xXoVB+OQ9DrVbL7t27+euvv/D39yd37txkz56dgwcPJr5gPAoNpcOOzemqEK8EqjrlY0O7jije2YvVaDTMnj2bRYsW8f333xMSEsKBAwcoW7YsLi4udOzYEXt7+8T2fn5+rF+/nrVr12JjY0O/fv3o0aPHB9/PS42KFSsyZ86cDxqa8bkjLXVKfHSeP3/O+PHjWbduXbpED4xb5nxNkfIFqd2xOmaWpum2US/TUaf/m8D4AgUK0LBhQypXrsysWbMQQqCOVxP4JBhLbRa8PXwID45IMkZoaCg9evRgzZo1H1T0AF75RqDUmCaK3g1xjltcRJB0thsqAgknJFl/jUrDlYOf75KnIZRKJS4uLly6dImmTZvy6NEjrl69ypgxY3j8+DFqnY6ee3YS+5/oRV+/wbOpM/Cb/htxXg+TjOW/cAmv9h8CQAvcDPTnr6uXkrRRq9WcOHGCJ0+eoFarWbFiBbdu3eLMmTOcPXuWoUOHJhE9gLx58zJ58mS8vb2ZN28eV69epXDhwnTt2pUTJ04YTEv3oZGcXCThk/jICCEYMGAAw4cPT7VAqiHi4+M5fvw4rVu3NrrPmNWDKV2rJGaWhjObGMLM0oxO05szYHS/JPsho0aNSthnehHORJeZdLTrx7CqP1NRVofRdafQPd8gRtedwtVD7mi1Onr37o2LiwstW7ZM131mhF3zDqJRvdnTrCirQwkqJmvnjSc5sEt2PC4qnu1z9n5IEz8YmzZt4tixY3h6enLnzh0sLS2pUaMGjQcNIDI+DkHSgrS2rj0I2f5mrzb2vhcq76dJxozTall/6ybRcXGJIQb29vb89ttvVKxYkXv37vHq1StatWpF06ZN0yz9JJfLadiwIZs3b+bp06fUrl2b8ePHU7BgQX799Vd8fX0/xEdjkG7durF//36iow17Mn8LSEudEh+V9evXs2DBAtzc3NI92zt06BBz5szh7Nmz6eqn0+lY8uM6jq75F5kM1PGGl70ssphjYW3O9L3jKV6lCJ6enrRu3RoXFxd+++03NCoNTZ06YBppmRAjKFKI/ctijh4doXmfcfbGv5iapn/GmR6EELSw6J7Mmcdf+BBKIGVkCYHyL4U/L/DGhhzo0SdZ6gQwMVOy2Xc52e3Szv/4ufDvv//StWtXTp8+TalSpRKPx8bG0mDNCl6KhBmVoYK0r4vPvvhzAXJzc8zyOpGjzZuXFIVOR9S+gxRSa3FxcaFTp044OTkls+Hq1av06tWLChUqsHjx4nQtY968eZO1a9eydetWKlasSN++fWnXrp1ROTXfh1atWuHi4oKra9pV5r9GpBmfxEfjxYsXjBs3LkNLnJC+Zc63USgUjFj8A5ueLqHrz+2xyWmNmaUpljYWWFibozRVUq5+KSZvH81WvxUUr5JQ7b1UqVK4ublx+fJl2rVuz4iaEzGPyYLQkaLoQcLsKT5KTY6n+XhwxbjKCO9DbFRcQlmJVBBC8ARPClMqxTYKEwUP7zzi5cuXhIWFER0djUql+myD3z09PenatSvbt29PInoAgap4IhVvHm+mjg5kb94EgJibHpg65UEmlxNz5y4KS0vMCxVINr5OoaBMb1cuXbrEyJEjDYoeQLVq1bh58yYODg6ULVuWAwcOGH0PFSpUYNGiRTx//pw+ffqwevVqnJycGDFiBB4eHkaPk16+9eVOacYnkSnotDouH7jOhd1XCQsKRyaXk8M+G/W61KRy03LIZDJat25NpUqVmDZtWvrH1+lwcHDg6tWryaoVZGSsUP8wYsJjMDEzIZtdVqyzpewhqlKp6FSkN7H+auQife+KFtbmLHb7nXwlPtweX9jLCHrkH5RkqROSzvgChR9B+FFO9h3ewtPgjE8n0/I0+12iZeFoNBo0Gg1arTbRccfExAQTExOUSqXB/6f1fWa2jYqKYuLEibi6utKkSZNkbT0iw5l3/y6x79QWfLv4rGWZUvjPmUeubi7Eet5DaLRJZnwAWUxN8Rg03Oifxblz5+jduzd169blr7/+Mqp6wrv4+Piwbt061q1bh52dHX379qV79+4ZSk6dEnFxceTJkwcPDw/y5s2baeN+KUjCJ/FeRIfH8M9fB9m3+ChajTaZK72FtTlmVmYUrOPIUc99XL9xLUNLfxcuXGDYsGHproKQGdw4dYep7eYQH5M8TOCl8Ocht9CjpzClyCNLKsoy2f/bu++4qur/geOvcweXDSqgILh37j1QcYIj3JqiqTnbZeNb/krLNE0zNS1za6aplSPDrThwD9x7L0RANpc7z+8P9AqykVV8no+HD+Wec8/5XIT7vp/1fkPTbo2Y/PdnL9UGo9HI3bt3uXHjBtevX+fGjRuWPzev36R5kp9lYcszKQPfJfkUj7mPhISJ5GBQkZpUkJ5vYbC20/BLyAzKVnHnRSaTKVUgfDEwZnUsL8/VarXs2bOH0qVLU7FixXTP1Xp5omvdAtL5WXtWfLZU/z4knDpN6ZHDidq6Pd3Ap1YouPLOhzn6v4qPj+eTTz5hy5YtLF68mE4vbIvILpPJxK5du1i6dCnbt2+ne/fujBgxgrZt2+ZJWaTRo0dTqVIlPvss+WdTluVC325RUETgE3Lt0e3HjGs7gejHselulE7JjInS5V2Ze2gapdxznnT3o48+wsHBga+++iqXrc29z3y/4eTOs2keN8kmgtlCI9ogoeAYu/CmG2op9ZutlbWaX2/8lOXr1mq13Lx50xLQUga4e/fuUbp0aapUqULlypWpXLmy5d+VKlXi/WZfcv/Kw1TXe3GO75mMenx2Trb8+XgJqnSKsBYVRqORnj17UqZMGRYtWpThG/WeWzf5cHugpRJ7wplzmBIScGyZ/L24+8XXqMu4oX8QiqRUYtYlFyp29u2Ic8f2lutIegOtz1+mSpUqVK1a1fK3o2PahAcvepadpXv37kyfPh17e/uMX5fZzJ5bN9h+4zoRiQkAuNnZ0a1qDdqUr8CTyEhWrVrFkiVLSEhIYPjw4QwbNizD4dfs2LlvL2/Pm4tH9y48io9HbzJhpVRS1sGREQ0a0aN6TezyeX66sBTdn3ChSIsMjeLd5uOJjYjFnEEy6JQUKHnyIIb3Wo7nl1MzcCiR8ZvAi2RZZuPGjaxfv/5lmpwr4fcjObv/UrrHEonDCg32UvJwllJWk0g8TqRNMPzPgh0M/WoAUVFRqXprKYNbREQEFSpUsAS06tWrWzZkV6hQIcOaewADPu3JT+8vISk+e5XmX6TWqOnxtl+RDnqyLPPuu+9iMBiYP39+hkEvPj6eGydPkpCUBE97RukVpHUbPhSlnS2ApceXMugBmKKiiImJ4cqVK4SEhFj+z2xtbVMFwpR/Pxve7Ny5M2fPnuXDDz+kXr16LFu2jDZt2qS6fqxOx/LTp1h+5hQGkynNfsNt169ho1LzRoNGjHrrLd577z1OnDjB0qVLqVu3Ls2bN+eNN97A398/2yMpOqORyQf28telCxibNeFuzPNtOHqTiVvRUXwbvI/JB/YyqHZd/teqDer/2GZ30eMTcuXtpp9x4/RtTMbkhQ8vbpbOqMK52kpFPZ9XmLot+4VRz507h7+/Pzdv3izwoZidK/cx9+3FaOPTDnOaZTMmjKglK3SylmC24k0XNJJNmnNN1nrO2ARjMBhS9dZS9t7Kli2b62waSYk6+pUeQVJC7gPfr9fn4lK28DZWZ2X69OmsWrWKAwcOpOlxXb9+ncDAQAIDAzl8+DDNmjUj7tUuhKf4ccms+Gx6Q53WCgWRf6zntfoN2b9/Pzdv3sTb25v27dtTr149VCoVN2/e5Nq1a1y/ft3yt62tbZqA+PDhQ2bMmMHAgQOZMmUKNjY2PIiNZcBfa4hMTESXxQIia6USD0dHfu89ANenGYsSExP566+/WLJkCRcvXmTw4MGMGDEizUKflOL1egZv+IOrkREkGbOuXGGtUlHXrTTLe/bBWpW7+oZFkQh8Qo5dO3WTD9tMQJeY/CZ7St5PNBG44kEdqXmWFc6trNUsvjAL94qls3W/SZMmERUVxaxZs/LtNWVk3cxNLPu/NRnm/YTknsgZDmKDPdWl+ume4+hmzy/npuPi4pJvwXvNdxv47Zu/LP8v2aWx1dBhkDcfLhybL+3KC2vXruXjjz/m8OHDeHp6otfr2b9/P4GBgWzZsoW4uDi6du1Kt27d6NixIw4ODgRevcL/dm1Ls8Alu+zUVtTcf4gGdevy+eefExERwd69e9m9eze7d+8mOjqadu3a0aFDB9q3b0/lypWB5ITkKQNhyr+NRmNykms/P+61bYVOIWVYReRFSkmitL09gQNfx+mF7Q7Xr19n2bJlLF++HE9PT0aMGMFrr72W6gOC0Wxm8IY/OP0oFH0OVupqlCqalfVkiX+vNJls/q1E4BNybOrgH9m79mCqHJgp55OyqnCuslLR421fxs4clq37NWzYkNmzZ6cZJsqKXq8nJiaG6OhoYmJiMvyT2fEyxvJUNr+CgvR7YrIsc4HjGDFQj5YZBjW3ci6suj0/R+3PKVmWmTlyPnvXHsp28NPYWFGrRTWmbvuiyKYrCw4Opnfv3qxatYo7d+6wZcsW9uzZQ82aNenWrRvdunWjfv36ab73fwcG8v6ZE0h2dsmrjHJAo1AwslETXi3lRqtWrbh27VqaVZX37t2zBMHdu3ejVqvp0KGDJRC6u6deJCTLMmFhYSxcuJBF8dGoPdwtQ7HaK9eIO3YctyGDMMbGcm/CNyhsn48ceE0Yj8LaGrVCSXNPT1b07Jtuu41GI9u3b2fJkiXs2bOHnj17MmLECLy9vVl74Rzf7A9C+/SDQPyJUzzZHIikVOIyoC821asRfzKEJxs3gyxTwr8rDk2TsxfZqtR826ET/tVr5uj7WFSJwCfkSFKijj4uw9NsAk8Z+J71+JrRgSS0nOMIreiS6o3Jxt6ajdErMlydZjAYiImJ4cKFC/Ts2ZN169YRHx+fo6BlNBpxcnLCyckJZ2dny7/T+5PR8cMbTjD7zYUZJn6+IZ8nhijq0xKFlHHgqNKgIvNPTs/FdzxnZFlmyfjVbPhxC2ajCaMh/U/2CqUCtUZFq55N+WTZ20Vybs9kMvHHH38wcuRIypQpQ1RUFJ07d6Zbt274+vpmWOUgMTGRTz75hMDAQKYu+IVvb17Nca5O3c1brB04hObNkqtzuLu7M3ny5AyfI8syV65csQTBvXv34u7uTvv27enQoQM+Pj6WwHnhcRh9//jdMrwZ+tMCdDdvYVunNm7DBmOMjSV09k94Tfg83XspZZkPSpWmafUaVK1aNcNtDo8fP2blypUsWbIEg9GI3VujiX1aqsuUmMjD72fjMe59DBERhP+6Co+PP+D+N1Mp886bSEoloXPm4fnFZyifDq3WdHElcNB/Y8O7CHxCjjy88YixDT5JM+f14grCG/IFbnMZGZlXaIq7VC7V+ZICPAc5EqeNTTdo6fV6nJyckCQJWZapU6dOjoOXjY3NSw8rxkbG8ZrXGAzpZHtJkrWcIIjmdEIlZTz/oVBL9P1fd0ZNKrg3jQfXQ9n441a2LQ9KrksoP12urpAw6o207d+SPh92p3K9CgXWpux48uQJO3bssAxhxsfH06FDBz7//HNatGiRZXWLEydOMHjwYJo0acK8efNwcnLiUvhjAjb8QaLegN6c+RCfWaejaRkPBjqVYPSIkaxatYrq1avTsGFDLl26hJtb2nRv6TGZTISEhFgC4eHDh6lZsyYdOnTgTo2qHIuNxpzirTfu6HG0l65YAl/YwqWU/fiDdK+tkGVcHz5Ct3MP165dQ6PRZLjQpkSJEsiyzMpdO/nm/GlMT+eQ08tk4zKoPwmnzlBm7EgAHi1Ygl39ujg0S+71WatU/NV/EDVdCqesUl4SgU/IkRtnbjOu7QQSY1NXw04Z+KLlCK5wmoa0wYSJk+ylAa2xlZ6v5FSoFXT5uhXuFUunG7hsbW2RJIl27doxbty4HOXnzGuTX5vFgT8Pp1m9ek++zjXOokyxOLoa9XCXyqc6T1LCGYcD1Gtcl9GjR+doBd7L0ml1nDtw2bL61qGEHbW9a2DnlHlJp4IiyzLnzp1jy5YtBAYGcubMGdq2bUunTp1YtmwZ3bt355tvvsnyOiaTie+++47Zs2fz448/8tprr6U6Hp6YwPLTp/jt7GnMspyqByjJMgpZprS1DRFbt8PV64ScOsWpU6fo3bs3s2fP5vDhwyiVylzPM+t0Oo4cOcL23btZU8IeXljE9GLgC53zE5JSiSk+gRLdu1i2YTxjq1Zzduy7SCT37DKaU7SysqJKlSooOvjwyM0l3SHfuGMniN0fjE21KshGE6V69wAgcv0mJJWSkv7dAVBIEmMaNeGTlq1z9T0oSkTgE3Ik9GYYo+t9lGb1YMrAd1u+gg6tZaHHafkg7pSjtPQ8Q4RKreTP8KXYOdpmeK/IyEgqVarEo0ePsLFJu1KyoFw5fp2P2k3MVXkjpUpB2wGt+HDRaP766y8WLVrE5cuXGTp0KCNHjqRq1ar50OKiLSEhgT179lh6dSqVyjJX5+Pjg1qtpm/fvtjb2/Prr79m2Wu/desWQ4YMQaPRsHz58kwzkehNJnbcuMahe3fZERzMw7t36delCzvmzOXIP4F4enri5+eHp6cns2bN4vz583Tp0oUxY8Ywa9YsQkJCKFeuXIbXz8q9mBi6rFpBojH1CELKwGdKSODx8t9we30QxugYQn/8Ca+vJ6BMMeenVig5NnJsmkUuKcmyTHh4ONeuXeObM6e4akz785syk4324iWUDg6U6OYHwJPArZjjE3AZ8Hw+sWf1mvzg2zXXr7+o+G8s0REKTCmPEskJmjORnQrnGjsNtg6ZB7PNmzfTsWPHQg16ANWbVKH9oNY5qvAAyR+u7UvYM3r6EKytrQkICLCUsDGbzZal8b///js6Xe62Ifxb3Lx5k7lz5+Ln50eZMmWYNWsWVatWZceOHdy4ccNyzNramo8++ojo6GiWLFmSadCTZZkVK1bQtGlTevfuzc6dO7NMv2WlVNK9Wg2+7dCZjlo9YctXMrNnHyIuXyE2NpaaNWsyZMgQ1q1bx969e6lduzbBwcGsXLmSGjVqMGnSpJf6PiQY9CiyCORKOzvc3x6D0sEBjZcnCo01xvDwVOeoFBLxhsw/iEmShJtb8uIc97Ie6Z7j1N4H93ffJGL1GpAky0Z+AFmnR2Gb+oNpVkPF/xYi8Ak5YmVtRfuA1ihVGf/ouEoelMSNQ2zjKLspRzXLJm9IrgLQ4y2/LD/Jb9y4kV69euVZ21/G+/NH0aBjbcxS9n7xFUoF9iXsmbn36zQZW6pXr86MGTO4e/cuY8eOZenSpXh6ejJu3DguXUp/s/y/jV6vZ8+ePXz00UfUqFGDli1bEhISwqhRo3jw4EGqYyl/DubMmcOOHTtYv359psPBkZGR9O/fn++//57du3czbty4HKfxcnNzQ6VSERcXR6dOndi+fTvt2rUjJCSEhQsXMnz4cOLi4ihfvjzBwcFotVp+++03Ll++nOvvi72VFaYsBtm0V6+RcOac5WvZaEB6oWdnNJtxyMFweUmb1AEs4cw5Yg8dAcC6ciUklRqloyOGsDDLOYawx6jLpN5y5GpbNIbIX5YIfEKO9fmgG8oXVgF6SBVSpcaqLtWnjfQqbaTuVJCqv3AFiVff7JzpPRITE9mzZ0+B1LLLDqVSyT3nyzjUskJjY4W1Xfq9PzNm1NZqqjepwoLT31O+ZsYppTQaDf3792fnzp0cOXIEjUZD+/btad26NStXrkSr1Wb43KLo0aNHLF26lD59+uDm5sbnn3+Ok5MTv/32Gw8fPrQcyyjd14YNG5g+fTpbt26lRImM07vt2LGDevXqUa5cOY4fP57juo7PuLi4oFarefLkCX5+fmzfvh0fHx+CgoLo1q0bHTp0YNy4cQC4urqyb98+PD096dSpE0lJ6a/yzYqrrR1yFjv3ZIOR6B27MOsNJF64iMLGBrVL6sQCNio19lbZH4HwqVARuxQVUSSNFXHBhzDrdOgfhmLW6XBs443uzj109x+gf/QI3Z272NZ6vn3BTq2mlVfuh3mLEhH4hBwrX8uLmk2roLLK+RJ4K2s1zV9tlGWGkO3bt9O0adNM3wAL0vLlyzl69Ci/HV7MH2GLGfP9UNwrlUaSJNQaFQqlAhQy5jJaGo2txo+HpuDqmf0sKJUrV2bq1KncvXuXcePGsXr1akt5mnPnzmV9gUJgNps5evQoEyZMoHHjxtSqVYvt27fTo0cPrl69mupYVr2xI0eOMHr0aP7++2/Kly+f7jlarZYPPviAESNGsGLFCmbOnPlSdetcXFxQKpWWbRK7d++mefPmnDhxAq1Wyw8//MCuXbsIDEyuzO7g4MCxY8cIDw+ndevWxKRI9ZVdGpWKntVrosxktMP2lZpYV67Eva+n8OTvQFyHDkZKsRjGSqkkoG69LIdMU/KtXDVVz9q2RnVsqlfj/jfTCFu0FJeB/VDa2VKqf2/CFiwhdO4vlOzdw5LSLfm+KtpVqJTDV1w0icUtQq7ERcUztsEnRIZGYcpgr9iL1FYqPKq6M+/oVKyzmC8bOnQoTZs25e23386L5r6UCxcuWHoCtWvXTnXMZDSREJOIlY0Vh48eYtiwYdjY2HDp0qWX3kpx584dlixZwtKlS/Hy8mL06NH0798fO7vCG26Kjo5m+/btbNmyha1bt+Lm5ka3bt3o2rUrLVu2zFWdxRs3buDt7c2iRYvo3r17uuecOXOGgIAAXnnlFebPn0/JkmnzoebUsWPH6NixI3/++SedO3emfv36/Pzzz3z00UdMmTKF9u3bs3fvXgICAjh79qylwOwPP/zAvHnzcHR0ZNu2bZQpUyZH973+JBL/Nb9lK2VYejRKJXteH4G7g0OOnjcteD/LTp/EYDZnfXI693y7STPeadoix88tikSPT8gVhxL2zDs6Fc+q7mhss55rsLbTULl+BWYf+CbLoGcwGPjnn3/w9/fPq+bmWkJCAv369WP69Olpgh6AUqXEsZQD1rYafHx8KFmyJAkJCRw5cuSl712+fHkmTZrE7du3GT9+POvXr8fLy4s333yTkJCQl75+dsiyzPnz5/nuu+9o27Yt5cqV49dff6VZs2YcO3Ys1bHcBL3IyEi6du3KhAkT0g16JpOJGTNm0LFjRz777DPWrFmTJ0EPkocvTSYTT548AcDPz49t27bRrl07goKCAPDx8aFfv36pPoC99dZb6PV6mjVrRqtWrbhx40aO7lulZCnql3HHKhd5WTVKJe0qVMpx0AMY0bBRjoZHn5EAJ401g+vWz/FziyoR+IRcK1HamZ+OT2PMjNcpXd41zbyXpJCwttPgVd2Dt38cwQ/7J2Va8PWZAwcOUKlSpUIvkCnLMm+99RZNmjRh2LBhWZ4vSRLjxo1Do9GwbNmyPGuHSqXi1VdfZfPmzZw9exYPDw969uxJ48aNWbhwIXFxcXl2L0ieXw0MDOStt96iQoUKdO/enbt37/K///2PsLCwVMdeRlJSEj169KBHjx68+eabaY7fvXuXjh07snnzZo4fP87gwYPzNM+pi4sLer2eqKgoAHx9fS0LXPbu3Ws5b+rUqZw+fZq1a9cCYG1tzcSJE7lx4waffvopbdq0yfEHkfld/XG1tUOVgwU5aoUSL0cnvu/cJUf3esbV1o7Vffpjb2VFdr+LCknCUaNhdZ/+OFsX7urqvCSGOoU8IcsyFw5e5sg/J4l8FI1CIVHKvQStejalepMqObrWe++9R5kyZRg/fnw+tTZ7li1bxowZMzh+/Hi2hxf1ej3lypVDq9USGhqKrW3G+xRfhslkYufOnSxcuJCgoCD69u3L6NGjady4ca6Cw+3bty3VDYKDg2nYsKFlb13NmjXzPLG22Wxm4MCBAPz+++9p5gBXr17NBx98wLhx4/jkk09yXbUiM7Iso1KpmDBhAhMnTkSv1+Pq6sq5c+eoVasWjx8/tvz/HTt2jFdffZXTp0/j7u6OwWCgVq1aLFiwgOjoaMaOHcu6devw8fHJ9v3DExMYvP4P7sXGZDnsaaNSUbWUCyt69Ml071523IqOYsj6P4jRJWWays1OraaUrS2/9eqHp2POK8kXZSLwCUWKLMuUL1+ebdu2UatWrUJrx/nz5y2f/DMr85Keb7/9lp9//pnvvvuOgICAfGrhc6GhoSxfvpzFixfj4ODAqFGjCAgIyDCHIyQPJx88eNAS7CIjI+nSpQvdunWjU6dOmT43L3z66accPnyYnTt3plqgEhUVxdtvv01ISAirVq2iYcOG+doOJycnBgwYwMKFCwHw9/dn0KBBzJs3j4kTJ6aqnv7ll18SEhLC5s2bkSSJ1atXM3fuXA4dOsTevXsZMGAAv/zyC7179872/ZOMBv68eIEFJ48TlaQlMWVGGcBapaa0vR1jGjWlV41auRoeTY/JbGbvnVssPHmcs2FhKGSZpKQk7O3t0ZuMNHT3YEyjpniXK5+jRTT/GrIgFCEnTpyQq1WrJpvN5kJrQ1xcnFyjRg15+fLluXp+RESEbGtrK7du3TqPW5Y5k8kk79y5U+7Xr5/s5OQkDxs2TD548KDle/no0SN52bJlct++fWVnZ2e5cePG8sSJE+WjR4/KJpOpwNr5888/y9WqVZMjIiJSPb5nzx65XLly8jvvvCMnJCQUSFs8PT3lHj16WL6eN2+ePGzYMPmLL76QP//881Tn6nQ6uUGDBvLixYtlWU7+ftepU0f++++/ZVmW5VOnTsnu7u7yggULctwOs9ksH71/T556YJ/84fZAedz2LfJ3wfvl06EP8/134UFsjDx3w19yi0ED5aP378mhcbH5er+iQAQ+oUj54osv5E8//bTQ7m82m+XBgwfLw4YNe6nrjBw5UraxsZFv3bol37v6UD5/8LJ8eu95+ebZ27JBb8ij1mYsLCxM/u6772QvLy/Z1dVV9vLykh0dHeW+ffvKy5Ytk0NDQ/O9DenZvHmzXKZMGfn69euWx5KSkuSPP/5Y9vDwkLdu3Vqg7alTp47csmVLy9fXr1+X3d3d5V27dsktWrRIc/7Zs2dlFxcX+datW7Isy/LGjRvlunXrWj44XLt2Ta5UqZL8zTffFOqHt5zavHmz3LVr18JuRoEperVIhGJtw4YNLFq0qNDuv3TpUkJCQjh27NhLXefdN99l14oDvNNwPOglS9kfs9mMQqHA/y1fXn3TN0d7/bIjJibGUt1g69atlCxZkhYtWhAZGcmJEyfQaDRUqlSJ0qWzVwQ4L508eZLhw4ezefNmS9HW8+fPExAQQKVKlThz5gwuLi4F2qZSpUrx6NEjy9eVK1fG1tYWBwcHzp49S3x8PPb2z5Or16lTh48//pjhw4eze/du/P39+fbbb1m3bh2vvfYaVapU4eDBg/j5+REWFsacOXNynFGmMOh0OjSanK/4/Lcq+v8jQrFx7do1IiMjadasWaHc/9y5c3z22WesW7fupRalBK05yPg206lsfgVdtAFdop6EmEQSYhLRxiWREJPInz/8w9Cq7/LzB8sw52Jf1TOyLHPx4kVmzJhBu3bt8PT0ZOnSpTRu3JgjR45w6dIl1q5dy65du7hx4waNGzdm7Nix1KxZk5kzZxL+Qg7InHoQF8u04H14L1tIvV/mUveXubRaupCv9+3hTnS05bzbt2/j7+/PwoULad68OWazmdmzZ9OuXTvef/991q9fX+BBD6B06dJpNqL7+fmxb98+GjVqRHBwcJrnfPzxx+j1eubOnYskSUyZMoUJEyZgfLpApUyZMuzbt4+zZ88SEBCAXp/z5OYFrbgFPrG4RSgyvv/+e65fv84vv/xS4PeOi4ujSZMmjB8/ntdfz33dvI1zt7D481XZruSgsdXQqFNdJv71cbZ7BlqtlqCgIEspH5PJZFmB2b59+yyDtizLHDp0iIULF7Jp0yb8/PwYNWoU7dq1y3YbbkY94cugXZwKfYhMctWDlNQKBQpJQW03Nz5u2IThr/ozZswY3n//fR48eMCwYcNISEhg5cqVlt5fYRg3bhyLFy8mNjbW8tjmzZuZPXs2rVu3RqvV8t1336V53vXr12nevDnBwcFUr16dDh06EBAQwIgRIyznJCUlMXDgQBISEli/fn2qnmNRs2zZMvbt28fy5csLuykFQvT4hCJjw4YN9OzZs8DvK8syY8eOpVWrVi8V9A79fZzFn2U/6AHoEnWc3HmW+R9kvu/vzp07zJ8/n+7du1O6dGmmTZuGl5cXmzdvTnUsOz1VSZJo1aoVK1as4NatW3h7ezNu3DiqVavGtGnTUg39pedk6AN6rlnFkfv30JlMaYIegMFsRmcycjL0IYM2/UX9Hq/y/vvv8+eff9KwYUPatGnD/v37CzXoAXh6epKYmJjqsXbt2nHs2DGaNWtm2cj+oipVqjBp0iSGDh2KyWRiypQpfP3116mqbFhbW/PHH39Qvnx52rdv/9K96/xU3Hp8IvAJRcKjR4+4ePEi7du3L/B7L168mLNnzzJ37txcX8NsNvPjm4vQaZ8HvcfyQ4LlLeyX/+GBfAuAR/Jd9sv/sF/ezEP5NpAc/LYs3s3jexGW5xoMBvbv38///vc/ateuTePGjTl8+DBDhgzhzp07qY69zB67EiVK8M4773D69GlWr17N9evXqVmzJn369GH79u1phmGvREYwdONfxBv0WaRafk5WqTjt6UHvN8cyfvx4Nm/ezJdffpllNfWC4O7ujizLqRKC29vb06RJE7RaLRcvXkzVG0zpzTffxMnJiWnTptGiRQvq1avHggULUp2jUqlYuHAhnTt3xtvbmzt37uTr68ktvV5fYMWRi4LC/8kTBJKHl/z8/Ar8l+/MmTOMHz+eAwcOvNS83uk950mMe/7maZJNXOIkjWiDhIJj7MJV9uAyITSiLQoUHCcIF9kdK0mDLMusmbEe58bWBAYGsnPnTipWrEi3bt1YsmQJjRs3zpdN3M9IkkTTpk1p2rQpP/zwA7///jvjx49nzJgxjBw5kuHDh+Ph4cGbgZvQpthrFn/iFE82ByIplbgM6ItN9WoAaK9cI+7YcdyGDAIgyWTkYpWKnJxxCociNOTn6uqKSqUiKioqVd1HX19fgoKCaNq0KQcOHEi3SogkSSxZsoSGDRvSvXt3Jk+ejJ+fHyNGjEiV8ECSJCZPnoybmxve3t5s3bo13fR3hUn0+AShEBTGMGdcXBz9+/dn1qxZ1KhR46WutXbGJrTxz0vVJBKHFRrsJSfsJAeUqLnPDZwohYPkjJ3kiDOliCAUAIPOyIZ5W9i4YROdO3fm/PnznDx5kkmTJtGsWbN8DXovcnR0ZMyYMZw8eZK//vqL+/fvU6dOHTq9PoSHMTGWnp4pMZGoLdso+8k4XF8PIGLtnwCE/rSAsIVLwJS6t6i2teFURNEa7nNxcUGSJEu+zmfSy9uZHi8vL2bOnMmQIUOoUaMGbdu25ccff0z33Pfee4/vvvuODh06cPDgwTx9HS9LBD5BKGCxsbEEBwfTpUvuchDmhizLjBkzhjZt2jB48OCXvt65/akLyNrhSGN8ANDJWgzo0aHFlue9HRvsSeD5MJqDgwPTJ3zPiBEj8PBIv2J2QWvUqBG//PILd+/eRd28aar5PFN0DPZNGqO0t8OqrAfGJ1HIZjPub4+hVP8+aa6VYDCw4OTxgmx+llxcXJBlOU3gq1u3LvHx8VSvXj3TwAcwZMgQqlSpwsSJE5k0aRI//PAD0SlWtKY0aNAgfv31V3r16mUpd1QUiMAnCAVs27ZteHt7Z1igND8sXLiQ8+fPZ/jpPCdMRhNGfepciwpJgVqyQpZlLnEST5LrmKlSzC4oUWHk+bChQqEgLir+pduTH6xtbbkpmyDFqk8rD3dKdEkuKJwQcgYrz7JIWawKPRn6gFhd7oq45gcXFxcMBkOawCdJEp07dyYsLIyrV69aElmnR5IkFixYwIoVK4iIiMDf35/vv/8+w/N9fX35559/GDlyJCtWrMiz1/IyROAThAJW0MOcp0+f5osvvuCPP/5INa+TW5Ii/cUlsixzgeOARDXqocIKI88DpAkjalLPaSpVBTekmRMxSUkZ5myM2bOXiNVrce7cMcvrWCmVRBahyvLW1tYolUpCQ0PTHPPz82PXrl20aNGCAwcOZHodNzc3fv75Z4YOHcrHH3/M/PnzCQsLy/D8pk2bEhQUxIQJE5gxY8ZLv46XJQKfIBQgnU7Htm3bCqz2XmxsLP3792fOnDlUr149T66pUCjSlGQCuMkF9OioS3MkScIeRxJ4XkIokTjseN7LNRlNOLnkvM5aQdCbTBmuHnVq74P7u28SsXoNpsTMg5okSelufyhMtra23L9/P83jnTp1Yu/evXh7e2c53AnQq1cvWrRowU8//cTgwYOZOnVqpufXqFGDgwcPsnz5cj755BMKc0t1cVvVKQKfUKj27t1LrVq1clzFOjdkWWb06NG0a9eOQYMG5em1vXs3Q6F8/uuUJGsJ5S51aY5CSu7FueBOLE+IlaOIl2OJ4QkuuFueY1/CnnI1PfO0XXnFUaPB8MJilYQz54g9lFxw17pyJSSVGmMWe9WMZjOOuSiGmp/s7e3T7fG5uLhQvXp1SpUqla3AB/Djjz+yadMmvL29WblyJXfv3s30fE9PTw4cOMDBgwcZPnw4hkzKBOUn0eMThAJUkMOcCxYs4PLly8yePTvPr93nw+6oNc/n78J5gJ4kDrKVffLf7JP/JoJQatCQ0xzkFPuoRn3UUvKnbGtbDf0/fjXP697lFVu1mjIvbEOQNFbEBR/CrNOhfxiKWadDlUXaMRuVGrds1jYsKE5OThkOS/r6+nLnzh1u3rxJZGRkltdydnZmyZIlfPTRRwwdOpRvvvkmy+eULFmSXbt2ER4eTq9evdJsqC8IIvAJQgExm81s2rSpQAJfSEgIX375JevWrcuTeb0XVa5XgbJVnvfevKQqtJd601byt/xxl8pTRvKijdSdNtKreEjlLeebZZnOQ33yvF15RZIkRjdsjE2KTee2NapjU70a97+ZRtiipbgM7IfSLuO9kBqlkuH1G6AsYkmbS5YsmWFQezbP16pVK/bt25et63Xu3Jnu3bsTGhrKxo0buXbtmuWYzmgkIjERrcGQamjT1taWjRs3UrJkSTp16pRmsU1+K26BT+TqFArNkSNHGDlyJOfPn8/X+8TGxtKwYUMmT57Ma6+9lm/3uXXuDu+1/D+SEnRZn5yCxtaKd+eNxHdYu3xqWd6I1+tpunh+ltXCM6JRKjkwfDQu+VSVPrd69erFxYsXuXLlSppjRqMRV1dX3nnnHWJiYrK9CjghIYF69erRrFkz9Eolbd95k+VnQohOSkKtUGA0m7FVWxFQpy6D69bHwyF5rtdsNvPpp5+ybds2tm/fTtmyZfP0tWbk1VdfZdSoUQU2117YitZHL6FYKYhhTlmWGTlyJJ06dcrXoAdQsU55Jm/+PN2FLhnR2FgxZEK/Ih/0AOytrBjdsEmqXl922ahUvFa7bpELepBcTSGjtGQqlYr27dujVCqzPc8HYGdnx6Jly9hvq+FE/VeYd/QIT7RazLKMzmTCJMvE6XUsPX2K9r8uZeTfG4jV6VAoFHz//fcMHTqUVq1apRuM84NY3CIIBUCWZTZs2ECvXr3y9T7z58/n6tWrzJo1K1/v80w9n1eYc3AKFV7xQmOrSbXgJSUbB2ucXB35ZNnbDPi0Z4G0LS+836wFHStVyVHws1GpaFrWiy9a++Rfw15C2bJlSUhIyPC4n58fV65c4d69e9lONB2v1/PD/dtYv1ITSaVCL6dfekr/NMl38N07vPr7SsITk9vxySef8NVXX+Hj48Px4/m/6b+4DXWKwCcUisuXL6PVamnYsGG+3ePkyZNMnDiRP/74A2tr63y7z4sq1S3PonM/MPvAN7Qb6I3GxgpJklAoFShVSuq0rsn//f4hax8upG3/lgXWrrwgSRKzfLvyWu26aJQqVJnM1yklBdYqFV2rVmfRqz2L3NzeM15eXiQlZbyp3tfXl927d9OqVSv27t2b5fWMZjMj/17P9SeRmLL5mvVmE6FxsQT8tY7Epys7hw0bxsKFC+nWrRs7duzI1nVyq7gFPpGkWigUz4Y582sVY0xMDP3792fevHlUrVo1X+6RlSoNKvLZr+/Cr+9iNBgxm8xYWf/7h5MUksSXbdoxqHZdlp0OYcPlCygVCmRZRn563GAy071add5o0IiaLq6F3eRMlStXDoPBgMlkSjcnarly5XBxcaFatWoEBQXRr1+/TK/3z9UrnA9/jO7pfsWEc+d5sn4TstFEiW5+ODRvmm5yb6Mscy82ll/PhDC2cVMgee5t/fr19OnThzlz5uTbcL0IfIJQADZu3Mi0adPy5dqyLDNixAh8fX0ZMGBAvtwjp1RqFagLuxV5q3LJUkxu35Hxrdty/MF9opKSABkna2sau5fF4V/yRlq6dGkUCgUxMTGULFky3XN8fX3R6/XZ6vEtOHnM0msz6w1ErPkD97fHIqlUPJgxC9s6r1iSexsiIgj/dRVeE8YDoDMZWRJyktGNmlgy5Xh7e7Nr1y66du1KeHg47777bt688BRE4BOEfHb//n1u3LhB69at8+X6P/30Ezdv3uS3337Ll+sLqdmq1bStULGwm5FrLk/3HkZFRWUa+KZMmUJoaCiPHj3KMOHCxfDH3ImJtnxtCA9HaW+PlUfyVheFtQZ96CNLcm9JY2VJ7v0sz2mS0cD+O7fxSfE9rVOnDgcOHMDX15fHjx8zadKkPB0tEYtbBCGfbdq0iW7duqFW530X6MSJE3z99desW7euQOf1hH+vkiVLYjabM1240rZtW06fPk2LFi0y7fXtuHE9VUo2qzKlcX/vbQCMMTGYEhJRu7pmmtw7wWDg7yupq30AVKhQgeDgYLZt28bYsWMx5WHqt+LW4xOBTyhwGzduzJfVnNHR0fTv35+ff/6ZKlWq5Pn1hf8mlUqFSqXi3r17GZ5jY2NDy5YtKVOmTKbbGsIS4jGn2BotKZUo7WyRzWYi1vyJY6sWqJyS9+xlltz72erOF7m6urJnzx5u3rxJ//79M12UkxMi8AlCPoqKiuLo0aN07tw5T68ryzJvvPEGXbt2zXLxgSC8yMbGJsu8mn5+fsTFxWXa4zOns21BNpsJ/20NkkKiZK/nG8QzS+5tziSviIODA//88w9qtZouXboQExOTabuzQwQ+QchHgYGBtGvXDrs8ztc4d+5c7ty5w8yZM/P0ukLxYGtry8OHDzM9x9fXl+PHjxMeHp7hua629rw48xa9dQfmhHjchr+OpFBkK7l3ySzS6mk0GlavXk3t2rXx8fHh0aNHmb/ALIjAJwj5KD+GOY8fP87kyZNZt25dsfrlFfKOo6NjlsGjZs2amEwmGjVqlOFwZ5vyFbBJMXdtjI4h/sRJ3IYNQXq66T+r5N52ajW+lbPegqNQKPjxxx/p3bs33t7e3LhxIzsvNV3FbXGLWNUpFBitVsvOnTv55Zdf8uyaUVFRDBgwgPnz51O5cuU8u65QvDg7O/P48eNMz5EkCT8/P548eUJQUBABAQFpzmniUZaS1jaW7QyJZ89hio3j3jfPa/OV6tXDktxbUqvSJPdWSBKdsxH4nrXpyy+/xNXVlTZt2hAYGEj9+vWz9dxnjE9zr6pykYru36r4vFKh0O3atYsGDRpYlo+/rGfzet27d6dPnz55ck2heHJxccky8EHycOecOXM4ffp0usclSWJ0oyZMDd6H1mjEsY03jm280z23ZI/uaR6zUioZXLc+VulspM/M2LFjcXV1pXPnzqxbtw4fH59sP7e4DXOCGOoUClBeD3POmTOH+/fvM2PGjDy7plA8ubq6Eh0dneV5HTt25MyZM8TGxma4GKZPzVfwcHDMNJ1beiTAWWPNiAaNcvQ8y3379GHt2rX079+f9evXZ/t5IvAJQj4xmUxs3ryZHj165Mn1jh07xrfffivm9YQ84e7uTlxcXJbnOTs7U6dOHWrWrJnh6k4btZrVvfvjamuHOpvBTylJOFlb83vfAZS0yX0Fi3bt2rF9+3beeecdFi1alK3niMAnCPnk4MGDeHp6UqFChZe+1pMnTxgwYAALFiygYsV/b8YQoejw8vLKduVzX19frKysMt3P52pnR+CgIdQrXQYblQplBllWJJIz31QuUZJ/Bg6honOJ3DQ/lQYNGrB//36mTZvGlClTyKzkakxSEjeeRKJxd+dxQnym5/6XiEK0QoEYN24czs7OTJgw4aWuI8syPXv2pGLFisyePTtvGicUe3///Td9+/ZFr9dnee6xY8cICAjAYDBw+/btLM+/FP6YJSEnCbx2FZVCQiFJmGUwmE20q1CRUQ2b0KCMe54nbA8NDaVLly60adOG2bNno3ja+zSazey8eZ0FJ45zKeIxKklCq9WisbGhhI0Noxs2oXfNV3D8D/cCReAT8p0sy1SuXJmNGzdSt27dl7rWDz/8wJo1awgODi5Wy6+F/HX+/Hnq1q2L2Zx+3byUTCaTJbH10aNHsz3qkGgwEBoXS7xej52VFW529vkeXGJiYvD398fDw4MVK1ZwNPQh720LxGg2kfB05emLbFQqzDK807QZbzVulm8VVAqTCHxCvjtz5gy9e/fm+vXrL/VLdOTIEfz9/XP0ZiMI2REdHU2JEiVITEzEJovN4wADBw7k5s2bjB07luHDhxdAC3MvKSmJgQMH8sjJkZgmDUjKZo5PG5WKV6vVYGqHzv+54Cfm+IR8t3HjxpeuvfdsXm/hwoUi6Al5Kk6nY9+jhzi2a8vMA3tZefY05x+HZfocX19fjEZjpvN8RYW1tTUfz55FeP3a2Q56AFqjkc1XLzPn6OF8bF3hED0+Id/Vr1+fuXPn5roMkSzL+Pv7U7VqVX744Yc8bp1QXF2JjGDJqRNsvnoFlUIiXqtFoVKhUamQgLKOjoxp1JTuVaujeWFz98OHD6lVqxb29vbcu3evSPeIZFnGZ8US7sU+z+n5YnFcKy9PHv30PLGEWZtEmbdGY1O1ClZKJQeGjcI1j9MMFibR4xPy1a1bt3j48CEtW7bM9TVmzpzJ48eP861wrVC8yLLMvGNH6LV2FRsuX0RnMpJgMCCpVMhAktGI1mjk+pMnTNy7m86/LedhXGyqa3h4eFC+fHl0Ot1LpQorCCdDHxKZYsXqs+K4pUe9gfu7bxL510ZUzs6U/3YS5b+dRLnJX6Gw1qAuVQpIXnm66tyZQmp9/hCBT8hXmzZtwt/fH2UOM1E8c+jQIaZPn866devEYhYhT0w/dID5J46SZDRiymLAK9Fg4GFcLP5rfuNRfOp9fr6+vri7uxf54c5Fp46jNT5fyJKyOK7azRWFtQZjRITluO7OXZQODqhKJm+t0JlM/HomBGM2Fv78W4jAJ+SrDRs20LNnz1w9NzIykoEDB7J48WLKly+ftw0TiqVNVy6x4kwI2qf5KbPDJMvEJOkYtH5dqjd/Pz8/EhISMi1TVBQcuHuHlOE9veK4Smdny3Ht5SvY1Kie6hoGs5krERkX6v23EYFPyDfh4eGcPn2ajh3TFtrMitlsZujQofTr1w9/f/+snyAIWZBlmekHD5CUIuglnDvPva+ncPfLScQdOWZ5XHvlGo9XrrZ8bZLNhCckEHTrpuWxVq1aERYWxu7du4vsxm+T2YzuhSCfWXFcAO3lq9hUr5bqOQpJIlqXN0VviwIR+IR8888//9C5c2esra1z/NyZM2cSGRnJ1KlTsz5ZELLh2IP7xKR4805vrsuUkEjoTwsIW7gETKmH9hIMBhacOm75WqPR4OPjg9Fo5OrVqwX2OnIio0U3GRXHNSUkon/4EOuqL1Y6kZHSVBr89xKBT8g3uR3mPHjwIN9//z1r165FnaK2mSC8jEWnTqA1ZD3X5f72GEr1T7/ax4XHYdxJkczaz88PZ2fnIjvPp5AkrNMpN/RicdxntFevoqlQAcUL8+lmWaZELj7AFlUi8An5Ij4+nr1799KtW7ccPS8iIoKBAweyZMkSypUrl0+tE4qj84/DcjTXlR61UsnFiOfli3x9fYmMjGTPnj350OK80b5iJRQpen7pFcd9RnvpKjY1qr14CaxVaqqVyptyYkWBqMcn5IsdO3bQvHlznLN4I0nJbDbz+uuv89prr9G9e9paZYLwMhKNqVN0ZTXXlR6T2UycTmf5ukqVKjg6Olrm+Yrifr6RDZuw59Yty8rOjIrj2jdphPbKFRzbpq4faK1SMbx+Q5Q5LLNUlInAJ+SL3Axzzpgxg5iYGKZMmZI/jRKKNbUi7ZaajOa6MqKQFNikGH6XJIlu3bqxZs0aLl26RK1atfK0zXmhXukyuDvYczMqCiDT4rjlvv4yzWOyLDPglTr52saC9t8J4UKRYTAYCAwMzFHtveDgYGbNmsWaNWvEvJ6QL8rY26d5LKO5rozJaa7j5+eHjY1NkZ3nA5jR0S/dub6s2KhUjGvRilK2ua8RWBSJwCfkuf3791O1alXKli2brfPDw8Mt83peXl753DqhuHq9XgNsU3yoymyuKyO2aisauaf+uW7Xrh1Pnjxh586dedrevNTA3YO5ft1zFPxsVCoG1a7HqIZN8rFlhUMEPiHP5WSY02w2M2TIEAYNGpTjhTCCkBP+1Wqk2m+Xcq7rzvgJ3Bk/gfjjJzN8vo1KxcgGjVItFAFwcHCgfv36BAUFZausUWHpUKkyv/bsS2k7e+wyGVWxVauxVav5X6s2/F8bn4JrYAESSaqFPCXLMl5eXuzatYsaNWpkef7UqVMJDAwkKChIDHEK+e6rvbtZe+E8OlP2M7c8Y6NSc/CNUThbpy1bNG3aNKZNm8aBAweoU6doz4eZZZlD9+6y8NRxDt+7i0qhRCGB3mSignMJxjZuSreq1bBW/Xd/H8XiFiFPnTx5Ent7+2wFvf379zNnzhxOnDghgp5QID7zbsOxhw+48SQSQw56Z9YqFXO7dE836EHytoZp06YRFBRU5AOfQpLwLlce73Ll0RmNxOp0GM1mnKytUw0F/5eJoU4hT2V3mPPx48cMGjSIZcuW4enpmf8NEwSS96Ot7t2PaqVc0Ciz97nfWqViekdf2leslOE59erVA5KzFf2baFQqXO3scHdwKDZBD8RQp5DHXnnlFZYuXUqzZs0yPMdsNtOlSxcaNmwoUpIJhUJnNPLT8aP8ejYEk9lMgiH1Hj/10+G/BmU8+LRVa+qXcc/ymv369WPLli3ExcWh+A/tefsvEoFPyDNXr17Fx8eH+/fvZ/qLP2XKFLZt20ZQUBCqXCyxFoS8YjCZ2HnzBqvPnyEsPh6DyYSDRkMLTy9er9cAT0enbF9r1apVjB07lgMHDlC/fv38a7Tw0sS7jpBnNm7cSI8ePTINevv27WPevHmcOHFCBD2h0KmVSrpWrUbXqmnTdOVU586d0ev17Nq1SwS+Ik70x4U8s3HjRnr16pXh8bCwMAICAli+fHm29/gJwr+Fq6srnp6ebNiwobCbImRBBD4hT4SGhnLp0iV8fHzSPW4ymRg8eDBDhw7F19e3YBsnCAXE39+fkydPYjKZCrspQiZE4BPyxN9//02XLl2weqGcyTPffvster2er7/+uoBbJggFp3fv3kiSREhISGE3RciECHxCnshsmDMoKIiff/6Z33//XczrCf9pzZs3x2w2/+u2NRQ3YlWn8NJiY2Px9PTkwYMHODg4pDoWFhZGw4YNWbZsGZ07dy6kFgpCwWnWrBk6nY7Tp08XdlOEDIgen/DStmzZQuvWrdMEPZPJREBAAG+88YYIekKx0b9/fy5evIjRmPO0aELBEIFPeGkZDXNOnjwZo9HIxIkTC6FVglA4+vTpgyzLHD9+vLCbImRADHUKL0Wn01G6dGmuXLlC6dKlLY/v2bOHgIAATp06hbt71lkvBOG/pGTJkgQEBDB37tzCboqQDtHjE17Knj17qF27dqqg9+jRIwYPHszKlStF0BOKpZYtW7J9+3YgueqB6F8ULWKJnfBSXhzmNJlMDBo0iFGjRtGxY8dCbJkgFI4ko4FX+vXh9JVLVJs7C5NsRpIkSlhbM6hOPQLq1MPNLm01eKHgiKFOIdfMZjMeHh4cPHiQypUrAzBx4kQOHDjAzp07USqVhdxCQSg4Zllm7tHDLAo5AbJMYjqLWzRKJTLQtnwFpnf0w8nauuAbKogen5A9sixz+/xdHt0OR5eow9bRlsikx7i5uVmC3q5du1i0aBGnTp0SQU8oVoxmM+9s2cyBu7fRZrKaU/c0o8u+O7fp/vtK/uj3GmXsHTI8X8gfoscnZCopUcfeNQdZM30jkQ+eoFQpkc0ykkIiMV6Lg6cNn83/AI86bjRp0oSVK1fSoUOHwm62IBQYWZb5367t/HPtCkk52MKglCTKOjqy+bUhOGg0+dhC4UUi8AkZOn/wMl90n4rJZCYpPinD82zsrUk0xdP0zVf49vvJBdhCQSh8xx7cZ/imv1L19LRXrhF37DhuQwYBEBt8iOgdu0Eh4TpoADbVqgJgpVAytF4DPm/dtlDaXlyJVZ1Cuk7uPMNnvt+QEJOYadAD0MYnQZKSqytDeXwvooBaKAhFw8KTx1P19EJ/WkDYwiVgMgNgjInhyd+BeHzwDq6DBxK+8nfkp0OeerOJ3y+cRSc2uxcoEfiENO5cus9XvWegS9Rn+zmSLBH3JJ6PfCaSlKjLx9YJQtERnpBA8L07pBw2c397DKX697F8rbt7D7WbK6qSJbCpUhlJpUR//4HluCzLbL9xrQBbLYjAJ6SxYsKaVEHvsfyQYHkL++V/eCDfyvAxs8lM9OMYgn4PLpR2C0JB23XrBgpJyvwkkwkpRXFmycoK45Moy9cJBgN/XDyfX00U0iECn5BKTEQsRwNPWTbcmmQTlzhJfVrRiLZc5TRJsjbNYwY5OVAmJehY891GsWFXKBaeaBPRZzFMaeVZFn3oI4xR0STdvoMxItIy1PlMRGJifjZTeIEIfEIqWxbtghSfYBOJwwoN9pITdpIDStRoiU/zWCLxluc8CY3i0lExdCP89xlMJsxZnKN2ccHZrxMPZ88l7tAR1GVKo7RPvYHdaM7qKkJeEoFPSOX4ttPotc+HOe1wpDE+AOhkLQb02GCX5jFrbCzPMeiNXDh4pSCbLQiFwtnaBqss9qyadTrs6tWh3Ndf4jKwP8boaNRurqnOERvZC5YIfEIqcVHxqb5WSArUkhWyLHOJk3hSCWvJNs1jGul54DMZTMRGxhV00wWhwDX39Mpyjs8UF8fDmT9iSkgkIeQMajc3VCVLWI5bq1R0qlg5v5sqpCAytwipqNRpfyRkWeYCxwGJatTL8DELCays1fnfWEEoZDVcXKnoXIJLEeEZnqN2ccGpXRvuT/kOpaMjbsMGpzouyzL9X6mT300VUhCBT0jFxbMk10NupXrsJhfQo6M+LZGefrpN77FnNDZWlCjtXFBNFoRCNbZxUz7ftYNEo8HymEOzJjg0a2L52rlzR5w7p03arpAkOlaqTAkbmzTHhPwjhjqFVLqM6ICNw/P5hiRZSyh3qUtzFJIyw8dSMptkWvVqWmBtFoTC5Fu5KuWdnVErcv52aqtSM66Fdz60SsiM6PEJqTTr1hC1lRotydlawnmAniQOspVnu3S9qJrmsWrUw10qjyRJNPGrTwk3p0J6BYJQsKyUSlb26kuPNasIT0xA/8JWhYzYqtQs9u9FRecSWZ8s5CmRq1NI47fJf/L71A2pVndml8ZWw7TtX1C7VY18aJkgFF0xSUmM2LyBS+GP0ZlMmDN4a7VTq7FWqVjWow+13Uqne46Qv0TgE9LQJ+l5v9UX3L5wF6M+e59eAaxtNfiNaM/bc97Ix9YJQtF2JuwRi0+dYNfN60+3OkiAjN5kooaLK2MaNaVDxUqoRemuQiMCn5Cu2CdxfNzuKx5cC0WfZMjyfGs7Da37NOfjpW+hyMVchyD818QkJXE7Jpo4nQ4btYoy9g6UdXAs7GYJiMAnZEKn1fHzh8vZvXI/kkIiKSFt8mkbe2vUGhUBX/al17td06zwFARBKGpE4BOylBinZdfK/WyYu4XIh1EYdAY0tlaUr+XJgE960qxbQ5QqMWwjCMK/gwh8giAIQrEiJmMEQRCEYkUEPkEQBKFYEYFPEARBKFZE4BMEQRCKFRH4BEEQhGJFBD5BEAShWBGBTxAEQShWROATBEEQihUR+ARBEIRiRQQ+QRAEoVgRgU8QBEEoVkTgEwRBEIoVEfgEQRCEYkUEPkEQBKFYEYFPEARBKFZE4BMEQRCKFRH4BEEQhGJFBD5BEAShWBGBTxAEQShWROATBEEQihUR+ARBEIRiRQQ+QRAEoVj5f5I54SCxtCnmAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pos = nx.spring_layout(G, seed=4)\n",
    "nx.draw(G, pos, node_color=colors, with_labels=True)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
